是否可以将方法属性从公共更改为私有,并从内部类中返回运行时?

时间:2010-07-19 17:39:34

标签: php oop properties methods

像这样: if($ sth)make_private($ this-> method);

或者可能有其他方法影响方法的可访问性?

问题是我编写了一个必须调用一次方法的类,因此在执行此方法后,我需要代码来限制从类外部访问给定方法。

2 个答案:

答案 0 :(得分:5)

你有几个更好的选择:

  1. 在类本身中使用一些静态变量处理'只能被调用一次',并抛出清晰的异常。
  2. 如果您无法改变类/对象本身,请使用装饰器对象处理'只能被调用一次'。
  3. 您建议采取非常不受欢迎的方式,请参阅classkit_method_redefinerunkit_method_redefine,但代表将来可能处理您的代码的任何人:请不要使用它。

答案 1 :(得分:0)

在方法中执行此操作的简单方法(限制为一次调用):

public function fooBar() {
     static $called;
     if (isset($called)) throw new Exception('Called already once!');
     $called = true;

     // your code
}