如何在其他方法之前调用方法

时间:2014-09-20 10:59:50

标签: php oop

我需要检查用户对方法的可访问性。

当调用脚本的方法时,我必须检查用户是否有权访问该方法。如果没有,该方法应该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.
    }
}

提前感谢。

1 个答案:

答案 0 :(得分:3)

您可以在PHP 5.0+中使用魔术方法,这样可以隐藏方法并先运行脚本。

Read about magic methods

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方法来修改对属性的访问权限。

相关问题