3
我試圖在我正在開發的基於PHP的產品中實現插件API。我創建了一個繼承自PHP的PDO類的類,然後添加了一些額外的方法。麻煩的是,我想在插件API中攔截諸如PDO的.query(),.exec(),.execute()和.fetchAll()之類的東西,處理傳遞給/來自這些方法的參數。我嘗試使用__call($ method,$ args)攔截器技術,但在這種情況下它不起作用,因爲我無法將PDO方法標記爲受保護。如何攔截PDO呼叫?
如何製作繼承自PDO的類,然後在將PDO類方法發送給父類之前攔截它們?目標是攔截傳遞給/從這些方法的參數,以便我的插件API可以工作。這是我正在使用的產品的插件API中沒有的缺失部分。
這是我落得這樣做。我也不得不做一些花哨的事情,因爲PDO使用類方法創建了一個聲明對象。所以,我不得不創建一個類似上面的PDOStatementStub類。然後,我使用__call()來截取並通過私有句柄變量的類方法運行它。 – Volomike 2012-02-08 10:51:22