为了达到这种目的,必须保证整个项目有且只有一个实例存在并提供一个访问点供全局访问.这就需要通过调用此类的一个共用静态方法来访问这个实例,也就是说此类不能在类外面去实例化,只能在类内部实例,而且是只能通过共用的静态方法调用实例;
最近在看php高级程序设计、模式、框架与测试一书,颇有感悟,与大家分享:
在做项目时,通常我们希望某些类实例一次就够了,比如共用配置类,模板操作类,数据库连接等等,这些类因为在整个项目开发中是通用的,如果实例多次实例就会占用资源.
为了达到这种目的,必须保证整个项目有且只有一个实例存在并提供一个访问点供全局访问.这就需要通过调用此类的一个共用静态方法来访问这个实例,也就是说此类不能在类外面去实例化,只能在类内部实例,而且是只能通过共用的静态方法调用实例;
那么怎么保证此类不能在外面实例化呢?需要此单例类必须拥有一个构造函数__construct,且设置为private(因为已经有__construct,不考虑默认的构造方法:直接用类名的方法的情况),这样就保证了不会在外面直接实例化!同时还需要声明一个静态方法变量来保存此类的实例,一个共用的静态方法来访问此实例,(因为要共用,所以声明为静态的,存放内存中的共用代码区部分).还需要创建一个空的私有的__clone()方法,以防止被克隆.
一个很典型的单例类如下:
实例代码如下:
<?php class Simple { /** * 单例类实例 * * @static * @var object Simple */ public static $_instance; //其他成员变量 /** * 构造方法 * * @return void */ private function __construct() { //写构造方法 } /** * 单例模式调用方法 * * @static * @return object Template */ public static function getInstance() { if (!self::$_instance instanceof self) self::$_instance = new self(); return self::$_instance; } /** * 声明一个空的私有克隆方法 * */ private function __clone() { } //其他方法 } //调用方式 $Simple = Simple::getInstance(); ?>
上面用到了 instanceof关键字,为比较操作符,返回布尔能够判断某个对象实例是否为制定的类型,或者是否从某个类继承,或者是否实现了某个特定接口
教程网址:
欢迎收藏∩_∩但请保留本文链接。

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

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

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

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

Dreamweaver Mac版
시각적 웹 개발 도구
