magic-methods

    3熱度

    2回答

    我正在創建一個響應魔術__call()方法的動態類。問題是,因爲我在已經存在的框架(Kohana)的基礎上構建了它,所以它檢查類的方法是否存在使用ReflectionClass::hasMethod,並且它似乎沒有觸發__call()魔術方法來檢查它是否存在。我能在這種情況下做什麼?似乎如果你動態添加方法(如$this->{$name} = function(){})它仍然不能「看到」它

    4熱度

    1回答

    我有一個類從字典繼承,以添加一些自定義行爲 - 在這種情況下,它將每個鍵和值傳遞給函數進行驗證。在下面的例子中,'驗證'只是打印一條消息。 字典的賦值按預期工作,只要將項添加到字典中就打印消息。但是,當我嘗試使用自定義詞典類型作爲類的__dict__屬性時,屬性賦值反過來將鍵/值放入我的自定義詞典類中,以某種方式設法將值插入到詞典中,同時完全繞過__setitem__(和另一個我定義的方法可能會添

    7熱度

    5回答

    在Zend的快速入門指南這裏http://framework.zend.com/manual/en/learning.quickstart.create-model.html我們可以看到: class Application_Model_Guestbook { protected $_comment; protected $_created; protected $

    1熱度

    1回答

    我知道,當我比較兩個物體lhs == rhs兩者定義__eq__,只是lhs.__eq__被稱爲除非它返回NotImplemented或rhs是lhs一個子類。 但是我想實現一個類,在與任意對象進行比較時,它們的實例將有機會說出他們想說的內容,而不管arbitrary_object.__eq__的實現細節以及比較語句中的位置如何。聽起來有些尷尬,但我正在開發一個面向測試的項目,看看testmani

    3熱度

    2回答

    我想實現一個像數組一樣的對象。它應該以這種方式使用: $var = new CustomCollection(retrieveFromWebService()); echo $var[0]; // legal $var[0] = 'a'; // illegal 這可以使用魔術方法或其他機制在PHP中完成嗎?

    10熱度

    1回答

    我使用PHP 5.3,它引入了閉包。因爲我現在在整個應用程序(和框架)都有閉包,我使用is_callable來查看$callback是什麼類型的處理程序。 如果$callbackis_callable,我足夠了解並使用該函數/方法/閉包。如果它不可調用並且是字符串,則可能是$this類中方法的名稱。它可能存在,也可能不存在。如果我放棄PHP,它會'拋出'一個很好的致命錯誤(我喜歡這些)。 但我想用

    5熱度

    3回答

    快速規格: PHP 5.3 error_reporting(-1) // the highest 我使用__get()通過參考特技神奇地訪問對象任意深度的數組元素。 快速例如: public function &__get($key){ return isset($this->_data[$key]) ? $this->_data[$key] : null;

    3熱度

    2回答

    我有一個自定義的序列類型。它本質上是一個列表和一個布爾標誌的包裝,我希望它能夠模擬通常的不可變序列行爲。 我的問題是切片。據我所知,在Python 3的方式來實現它是有一個__getitem__(key)方法,它返回一個項目,如果%key是單個索引和切片序列如果%key是切片對象。但我應該如何區分這些情況? 我基本上有兩個假設。 sliced_list = self.wrapped_list[ke

    0熱度

    1回答

    好的,在工作中我們發現這種獲取相關數據/對象的方法是非常棒的。 權的例子,我有這個類裏面的一些相關對象: class Country { private $language; //$language will be an object of class Language private $regions; //$regions will be an ARRAY of Region objec

    2熱度

    1回答

    我在PHP的魔法__sleep()方法中遇到了自動加載類的問題。自動加載不會發生,所以無法找到課程。在試圖調試這個,我試着調用spl_autoload_functions()然後導致PHP段錯誤... 下面的示例代碼演示了這個問題。使用實例方法或靜態方法具有相同的行爲。這似乎適用於我使用__destruct()罰款,這適合我的用例很好,但我很好奇背後的原因。這是一個PHP的錯誤,還是有一個明智的解