【发布时间】:2015-01-15 00:03:47
【问题描述】:
我正在研究一些 OAuth 的东西,并发现了这行有趣的代码:
$port or $port = ($scheme == 'https') ? '443' : '80';
我不熟悉赋值语句左侧的 or 关键字。
我希望 $a 或 = ($b=$c); 相当于 $a = $a 或 ($b=$c); 以类似的方式 $str.=" 附加到 str"; 相当于 $str=$str."将此附加到 str";
在帮助中搜索“或”会呈现许多结果!因此我转向了stackoverflow....
谁能告诉我作业左侧的“或”关键字的作用。
在上下文中,整个功能是:
public static function php_self($dropqs = true) {
$url = sprintf ( '%s://%s%s', empty ( $_SERVER ['HTTPS'] ) ? (@$_SERVER ['SERVER_PORT'] == '443' ? 'https' : 'http') : 'http', $_SERVER ['SERVER_NAME'], $_SERVER ['REQUEST_URI'] );
$parts = parse_url ( $url );
$port = $_SERVER ['SERVER_PORT'];
$scheme = $parts ['scheme'];
$host = $parts ['host'];
$path = @$parts ['path'];
$qs = @$parts ['query'];
$port or $port = ($scheme == 'https') ? '443' : '80';
if (($scheme == 'https' && $port != '443') || ($scheme == 'http' && $port != '80')) {
$host = "$host:$port";
}
$url = "$scheme://$host$path";
if (! $dropqs)
return "{$url}?{$qs}";
else
return $url;
}
【问题讨论】: