我正在使用activecollab自定义模块的权限,并在尝试调用静态方法的函数时收到此错误消息不知道原因;请帮助将是真正的appericiatable ..
Parse error: parse error, expecting `T_PAAMAYIM_NEKUDOTAYIM' in D:\wamp\www\activecollab\public\activecollab\3.0.9\modules\projectcomrequest\models\Projectcomrequests.class.php on line 130
我在模型文件中执行的代码是:
class Projectrequests extends DataManager {
...
....
function getPermissionValue($name){
$roles = Roles::find();
foreach($roles as $role) {
if($role->getPermissionValue($name))
return true;
else
return false;
}
static function canAccess() {
if(self::getPermissionValue('can_use_project_request')) return true;
return false;
} // canAccess
...
..
}
通过此方式调用控制器:
echo Projectrequests::canAccess();
答案 0 :(得分:5)
foreach($roles as $role) {
if($role->getPermissionValue($name))
return true;
else
return false;
你错过了一个关闭}。所以它应该是:
class Projectrequests extends DataManager {
...
....
function getPermissionValue($name){
$roles = Roles::find();
foreach($roles as $role) {
if($role->getPermissionValue($name))
return true;
else
return false;
} // <-- here
}
static function canAccess() {
if(self::getPermissionValue('can_use_project_request')) return true;
return false;
} // canAccess
...
..
}
答案 1 :(得分:3)
当您尝试在$this
的第一行调用时,静态方法没有类上下文canAccess()
。您应该调用self::
而不是$this->
来访问类上下文,然后您只能调用其他静态字段和方法。您必须使getPermissionValue
也是静态的。
还有一些错误:
{
。为你修复了这个问题(只在循环内部返回true,否则构造没用,因为否则你的foreach只循环一次)。getPermissionValue
中的canAccess
,因为无论如何它都是布尔值(if-else结构是无用的)。更正后的代码:
static function getPermissionValue($name){
$roles = Roles::find();
foreach($roles as $role) {
if($role->getPermissionValue($name))
return true;
}
return false;
}
static function canAccess() {
return self::getPermissionValue('can_use_project_request');
} // canAccess
我也建议使用public
和private
之类的访问修饰符,因为这是一种很好的做法。
答案 2 :(得分:2)
<?php
class Projectrequests extends DataManager {
...
....
function getPermissionValue($name){
$roles = Roles::find();
foreach($roles as $role) {
if($role->getPermissionValue($name))
return true;
else
return false;
} // <!---- YOUR ERROR IS HERE
}
static function canAccess() {
if($this->getPermissionValue('can_use_project_request')) return true;
return false;
} // canAccess
...
..
}
此外,静态方法无法访问$this
您需要使用self::