像這樣: 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,但代表的人可能在你的代碼的工作在未來:請不要使用它。