我需要检查用户对方法的可访问性。
当调用脚本的方法时,我必须检查用户是否有权访问该方法。如果没有,该方法应该return false
。
我制作了一个名为_access()
的方法来检查辅助功能。
如何在每个其他方法之前调用此方法。
我不能自己在每种方法中致电_access()
。
OBJ:
class foo{
function a()
$this->_access(); //I dont want to do this for every functions...
}
function b()
//b() should stop if _access() == false
}
function _access()
//return true or false;
//this method can backtrace and check user accessibility to caller method.
}
}
提前感谢。
答案 0 :(得分:3)
您可以在PHP 5.0+中使用魔术方法,这样可以隐藏方法并先运行脚本。
class foo{
public function __call ( string $name , array $arguments )
{
if($this->_access)
$name($arguments);
else
echo "User does not have access";
}
private function a(){}
private function b(){}
private function _access()
//return true or false;
}
}
通过将它作为基类然后扩展,您可以在所有类中相当容易地实现它。
class BaseMethodAccess{
public function __call ( string $name , array $arguments )
{
if($this->_access)
$name($arguments);
else
echo "User does not have access";
}
private function _access()
//return true or false;
}
}
class Foo extends BaseMethodAccess{
private function getName(){}
}
您还可以实施__get
方法来修改对属性的访问权限。