像这样: if($ sth)make_private($ this-> method);是否有可能将方法属性从公共私有方法更改为私有方法,并且可以从类内部返回运行时方法?
或者还有其他方法可以影响方法的可访问性?
问题是我写了一个类,其中方法必须被调用一次,所以我需要代码来限制在执行此方法后从类外部对给定方法的访问。
像这样: if($ sth)make_private($ this-> method);是否有可能将方法属性从公共私有方法更改为私有方法,并且可以从类内部返回运行时方法?
或者还有其他方法可以影响方法的可访问性?
问题是我写了一个类,其中方法必须被调用一次,所以我需要代码来限制在执行此方法后从类外部对给定方法的访问。
简单的方式向评判内这样做(限制为一个呼叫):
public function fooBar() {
static $called;
if (isset($called)) throw new Exception('Called already once!');
$called = true;
// your code
}
你有几个更好的选择:
你的建议可能是非常不可取的方式,请参阅classkit_method_redefine或runkit_method_redefine,但代表的人可能在你的代码的工作在未来:请不要使用它。