单件模式即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 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사
Windows 11 KB5054979의 새로운 기능 및 업데이트 문제를 해결하는 방법
4 몇 주 전ByDDD
KB5055523을 수정하는 방법 Windows 11에 설치되지 않습니까?
3 몇 주 전ByDDD
Inzoi : 학교 및 대학에 지원하는 방법
4 몇 주 전ByDDD
KB5055518을 수정하는 방법 Windows 10에 설치되지 않습니까?
3 몇 주 전ByDDD
Atomfall에서 사이트 사무실 키를 찾을 위치
4 몇 주 전ByDDD

뜨거운 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

드림위버 CS6
시각적 웹 개발 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기
