单件模式即singleton pattern(属于创建型设计模式),最适合解释的例子就是日志记录了.
其他模式的php代码以后写好了在分享给大家,希望可以增加点大家对php中设计模式的概念.
复制内容到剪贴板
代码:
<?php <br/>/*<br>* 1.Singleton Pattern for the log of application<br>* 2.建议将类文件名写成class.log.php<br>* 以便__autoload()自动载入该类<br>* 3.Author:NoAngels<br>* 4.E-mail:flare_1023@163.com QQ:82535599<br>*/<br>final class log{<br> #构造函数,日志文件不存在就创建否则就打开文件以供后续使用<br> private function __construct(){<br> if(!$this->__fp = @fopen('application.log', 'ab+')){<br> $this->__errMsg = '创建或读取日志文件失败';<br> $this->__errorHandler();<br> }<br> }<br> #析构函数,释放资源<br> function __destruct(){<br> #站位先<br> }<br> #静态函数,配合静态变量使用,实现singleton设计模式<br> static function getInstance(){<br> if(self::$__instance == NULL){<br> self::$__instance = new log;<br> }<br> return self::$__instance;<br> } <br> #类内部错误处理机制<br> private function __errorHandler(){<br> die($this->__errMsg);<br> }<br> #将指定内容写入到日志文件中<br> public function inLog($temp){<br> if(@fwrite($this->__fp, time()."|||".$temp."\r\n") === FALSE){<br> $this->__errMsg = '写入到日志文件失败';<br> $this->__errorHandler();<br> }<br> return;<br> }<br> #将日志内容输出,参数默认为1,即默认用类内部方法打印日志,否则可自定义显示方式.两种情况下都返回数组<br> public function outLog($default = 1){<br> $outArray = array();<br> while(!feof($this->__fp)){<br> $line = fgets($this->__fp);<br> if(strlen($line) != 0){<br> $tmp = explode("|||", $line, 2);<br> $outArray[] = $tmp;<br> } <br> }<br> if($default == 1){<br> $this->__printLog($outArray); <br> }<br> return $outArray; <br> }<br> #默认日志输出方式<br> private function __printLog($arr){<br> foreach($arr as $temp){<br> echo '记录时间:'.date('Y-m-d H:m:s' , $temp[0]).'<br>原因:'.$temp[1].'<br>';<br> } <br> }<br> #私有变量,初始化每个变量<br> static private $__instance = NULL;<br> private $__fp = NULL;<br> private $__errMsg = '';<br>}<br>?>
附上测试文件
代码:
<?php <br/>try{<br> if(!@mysqli_connect('localhost', 'root', '10d237776')){<br> throw new Exception('mysql connect failed!');<br> }<br>}<br>catch(Exception $e){<br> print 'y';<br> log::getInstance()->inLog($e->getMessage());<br>}<br>?>
陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章
刺客信條陰影:貝殼謎語解決方案
4 週前ByDDD
Windows 11 KB5054979中的新功能以及如何解決更新問題
3 週前ByDDD
在哪裡可以找到原子中的起重機控制鑰匙卡
4 週前ByDDD
<🎜>:死鐵路 - 如何完成所有挑戰
1 個月前ByDDD
Atomfall指南:項目位置,任務指南和技巧
1 個月前ByDDD

熱工具

SublimeText3漢化版
中文版,非常好用

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

WebStorm Mac版
好用的JavaScript開發工具

SublimeText3 Linux新版
SublimeText3 Linux最新版

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。