我正在编写一个脚本,我可以检查权限和内容,我偶然发现了一些奇怪的事情。
我的权限脚本可以检查系统和功能,并查看是否允许用户使用m。
我将用一些代码解释:
if(permission::check('factbounce', 'magklik')){
echo ' Yep good ';
} else {
echo 'Nope not good';
}
这里我有一个系统factbounce和一个函数magklik,现在在权限类中:
public static function check($systemCode, $functionCode = null ){
$instance = self::get();
if($instance->checkSystem($systemCode)){
if(is_null($functionCode))
return true;
if(!$instance->checkSystemFunction($functionCode))
return false;
return true;
}
return false;
}
这段代码会触发checkSystemFunction
,并会检查magklik:
private function checkSystemFunction ( $functionCode ){
if(!self::$oSystemFunction)
self::$oSystemFunction = org_system_function::getByCode($functionCode);
if(!is_object(self::$oSystemFunction));
echo 'No Object';
echo '<pre>'.print_r(self::$oSystemFunction, true).'</pre>';
if(!self::$oSystemPermission->checkFunctionPermission(self::$oMedewerker, self::$oSystemFunction))
return false;
return true;
}
代码的输出是:
No Object
org_system_function Object
(
[primaryKey] => org_system_function_id
[table] => org_system_function
[arAssoc] => Array
(
[function_id] => 1
[name] => May click around
[code] => magklik
[description] => do what you want
)
)
Yep good
我不明白为什么它没有说明任何物体,当我打印它时它就是一个物体。
答案 0 :(得分:8)
您正在使用尾随if
:
;
子句
if (!is_object(self::$oSystemFunction));
echo 'No Object';
所以echo 'No Object'
总会被执行。
答案 1 :(得分:4)
您使用分号终止if
语句。因此,echo语句正在正常处理,并且每次运行脚本时都会执行。
这应该有效:
if(!is_object(self::$oSystemFunction))
echo 'No Object';
但将if else块与花括号分开始终是一个好主意。
if(!is_object(self::$oSystemFunction)) {
echo 'No Object';
}
这样可以提高代码的可读性和可维护性。
举例说明:
$a = 1;
$b = 2;
if ($a == $b);
echo 'foo';
以上代码输出:
foo
请参阅演示here。