PHP上的事件。可能吗?

时间:2010-02-05 22:09:47

标签: php events language-features

我来自C#世界并且刚开始做一些PHP编码,所以我想知道是否可以在PHP上使用事件,或者是否计划在将来的版本中包含此功能。如果您有办法模拟它,不同于this,我们将非常感谢,谢谢。

6 个答案:

答案 0 :(得分:4)

在PHP中没有像C#这样的事件,但您可以实现Observer Pattern来附加委托以获得通知。

答案 1 :(得分:2)

Prado PHP Framework是一个事件驱动的框架,可能会吸引你,特别是因为你来自C#并且可能是ASP.NET。

看看Quick Start。具体来说,请查看Control Reference下的代码。有很多代码示例供您查看,看看它是否与您要查找的内容类似。

答案 2 :(得分:1)

Stubbles非常好Event Dispatcher

答案 3 :(得分:1)

SPL - Standard PHP Library提供SplObserverSplSubject接口,用于在PHP中实现观察者模式

答案 4 :(得分:1)

我也建议普拉多。

答案 5 :(得分:0)

您可以在PHP中创建类似事件处理类的内容:

class Event {
    protected $_eventCallbacks = array();
    function addEventCallback($callback) {
        $this->_eventCallbacks[$callback] = $callback;
    }
    function removeEventCallback($callback){
        if(isset($this->_eventCallbacks[$callback])){
            unset ($this->_eventCallbacks[$callback]);
        }
    }
    function cleanEventCallback(){
        foreach ($this->_eventCallbacks as $callback) {
            unset ($callback);
        }
    }
    function fireEvent() {
        foreach ($this->_eventCallbacks as $callback) {
            call_user_func($callback);
        }
    }
}

此代码来自此处http://setahost.com/php-events-singletone-and-factory-pattern-application/ 使用此类还有模块化和子模块化应用程序的良好示例。