PHP實(shí)現(xiàn)事件機(jī)制的方法
本文實(shí)例講述了PHP實(shí)現(xiàn)事件機(jī)制的方法。分享給大家供大家參考。具體如下:
<?php /** * 事件 */ class Event { private $callbacks = array(); private $holder; function __construct() { $bt = debug_backtrace(); if (count($bt) < 2) { $this->holder = null; return; } $this->holder = &$bt[1]['object']; } function attach() { $args = func_get_args(); switch (count($args)) { case 1: if (is_callable($args[0])) { $this->callbacks[]= $args[0]; return; } break; case 2: if (is_object($args[0]) && is_string($args[1])) { $this->callbacks[]= array(&$args[0], $args[1]); } return; default: return; } } function notify() { $bt = debug_backtrace(); if ($this->holder && ((count($bt) >= 2 && $bt[count($bt) - 1]['object'] !== $this->holder) || (count($bt) < 2))) { throw(new Exception('Notify can only be called in holder')); } foreach ($this->callbacks as $callback) { $args = func_get_args(); call_user_func_array($callback, $args); } } }
希望本文所述對(duì)大家的php程序設(shè)計(jì)有所幫助。
相關(guān)文章
基于php中echo用逗號(hào)和用點(diǎn)號(hào)的區(qū)別詳解
下面小編就為大家分享一篇基于php中echo用逗號(hào)和用點(diǎn)號(hào)的區(qū)別詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-01-01微信公眾平臺(tái)開(kāi)發(fā)-微信服務(wù)器IP接口實(shí)例(含源碼)
本文主要介紹了微信公眾平臺(tái)開(kāi)發(fā)中的微信服務(wù)器IP接口實(shí)例,具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧2017-03-03PHP實(shí)現(xiàn)的常規(guī)正則驗(yàn)證helper公共類完整實(shí)例
這篇文章主要介紹了PHP實(shí)現(xiàn)的常規(guī)正則驗(yàn)證helper公共類,結(jié)合完整實(shí)例形式分析了php針對(duì)常規(guī)的電話、手機(jī)、郵箱、賬號(hào)等進(jìn)行正則驗(yàn)證的操作技巧,需要的朋友可以參考下2017-04-04php監(jiān)測(cè)數(shù)據(jù)是否成功插入到Mysql數(shù)據(jù)庫(kù)的方法
在PHP中該怎么用代碼判斷數(shù)據(jù)是否成功插入到Mysql數(shù)據(jù)庫(kù)?這篇文章中給出了兩種解決的方法,大家可以根據(jù)需要選擇相對(duì)應(yīng)的方法,有需要的朋友們下面來(lái)跟著小編一起學(xué)習(xí)學(xué)習(xí)吧。2016-11-11PHP實(shí)現(xiàn)基于PDO擴(kuò)展連接PostgreSQL對(duì)象關(guān)系數(shù)據(jù)庫(kù)示例
這篇文章主要介紹了PHP實(shí)現(xiàn)基于PDO擴(kuò)展連接PostgreSQL對(duì)象關(guān)系數(shù)據(jù)庫(kù),結(jié)合實(shí)例形式分析了php使用pdo連接PostgreSQL并執(zhí)行簡(jiǎn)單sql語(yǔ)句的相關(guān)操作技巧,需要的朋友可以參考下2018-03-03