本文將帶您系統了解如何在Phalcon中使用事件管理器實現觀察者模式,並配合代碼示例展示各關鍵步驟。
use Phalcon\Events\Event;
use Phalcon\Mvc\User\Component;
class MyListener extends Component
{
public function beforeNotify(Event $event, $source, $data)
{
echo "執行前,源對象:" . get_class($source) . ",數據:" . $data . "<br>";
}
public function afterNotify(Event $event, $source, $data)
{
echo "執行後,源對象:" . get_class($source) . ",數據:" . $data . "<br>";
}
}
這個監聽器通過beforeNotify和afterNotify方法,在事件被觸發的前後輸出相關信息。
use Phalcon\Events\Manager;
$eventsManager = new Manager();
$myListener = new MyListener();
$eventsManager->attach('notify:before', $myListener);
$eventsManager->attach('notify:after', $myListener);
上面的代碼將$myListener綁定到notify:before和notify:after兩個事件,這樣當事件被觸發時,監聽器會執行對應方法。
$eventsManager->fire('notify:before', $someObject, 'Some Data');
$eventsManager->fire('notify:after', $someObject, 'Some Data');
這裡的$someObject是事件的源對象, 'Some Data'是傳遞的數據。監聽器會根據事件類型調用對應的方法處理這些信息。
執行前,源對象:SomeObject,數據:Some Data
執行後,源對象:SomeObject,數據:Some Data