4
我試圖創建一個特性來製作「可凍結值對象」。 (爲了避免位置參數和伸縮構造函數)。這意味着setters可以用來初始化對象,然後調用->freeze()
,這使得對象「不可變」。二傳手仍然會在那裏,但是當被召喚時,他們會拋出異常。這可以通過在每個設置者開始時撥打$this->assertIsWritable();
來實現。不過,我想避免這種情況(因爲它很容易忘記這樣的呼叫),並自動進行檢查。有沒有辦法攔截調用定義的方法?攔截調用定義的PHP方法
在溶液不接受:
- 接近於打破類型提示和/或靜態代碼分析在特殊的PHP擴展
- 依賴
我使用PHP 7.0。
東西可能?可能[ 'method_redefine'](http://php.net/manual/en/function.runkit-method-redefine.php)。我不知道你有什麼辦法可以做到這一點。 –