我正在研究activecollab自定义模块的权限,并且在尝试调用静态方法的函数时收到此错误消息不知道为什么; 请做帮助将是非常合适的..
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();
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
...
..
}
静态方法没有类上下文$this
,因为您尝试在canAccess()
的第一行中调用。您应该调用self::
而不是$this->
来访问类上下文,然后只能调用其他静态字段和方法。您还必须使getPermissionValue
也是静态的。
还有一些错误:
- 你忘了你的前
{
。为您修复了此问题(仅在循环内返回 true,else 构造是无用的,否则您的 foreach 只会循环一次(。 - 您可以立即将调用的值返回到
canAccess
中getPermissionValue
,因为它无论如何都是布尔值(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
,因为这是很好的做法。
<?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
...
..
}
此外,静态方法无法访问您需要使用self::
$this