События на PHP. Является ли это возможным? - PullRequest
4 голосов
/ 06 февраля 2010

Я из мира C # и только начал немного программировать PHP, поэтому мне было интересно, возможно ли использовать события на PHP или планируется ли включить эту функцию в будущем выпуске. Если у вас есть способ имитировать его, отличный от this , это было бы очень признательно, спасибо.

Ответы [ 6 ]

4 голосов
/ 06 февраля 2010

Нет таких событий, как C # в PHP, но вы можете реализовать Шаблон наблюдателя для прикрепления делегата к уведомлению.

2 голосов
/ 06 февраля 2010

PHP Framework Prado - это управляемая событиями среда, которая может вам понравиться, особенно если вы приехали из страны C # и предположительно ASP.NET.

Взгляните на Быстрый старт . В частности, взгляните на код в контрольном справочнике. Существует множество примеров кода, на которые вы можете посмотреть и убедиться, что это то, что вы ищете.

1 голос
/ 06 февраля 2010

Я бы тоже предложил Прадо.

1 голос
/ 06 февраля 2010

SPL - стандартная библиотека PHP * предоставляет интерфейсы SplObserver и SplSubject для реализации шаблона наблюдателя в PHP

1 голос
/ 06 февраля 2010

Stubbles имеет довольно хороший Диспетчер событий .

0 голосов
/ 25 апреля 2011

Вы можете создать что-то вроде класса обработки событий в 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/ Есть также хороший пример модульного и субмодульного приложения, использующего этот класс.

...