php设计模式之单例模式学习
Jul 25, 2016 am 09:07 AM
程序运行结果为: Fatal error: Call to private A::__construct() from invalid context in E:\PHPProjects\test.php on line 6 我们已经禁止外部用new实例化这个类,我们改如何让用户访问这个类呢?前门堵了,我们需要给用户留个后门。
解决办法是:static 修饰的方法,可以不经实例化一个类就可以直接访问这个方法。
//不能用new实例化的类.
程序运行结果为: $a1 的类是 A , $a2 是 A $a1 $a2 不是一个对象. 我们已经通过static方法返回了A的实例。但还有问题。我们如何保证我们多次操作获得的是同一个实例的呢? 解决办法:
static的属性在内部也只有一个。
static 属性能有效的被静态方法调用。将这个属性也设置成private,以防止外部调用。
先将这个属性设置成 null。每次返回对象前,先判断这个属性是否为 null 。
如果为 null 就创建这个类的新实例,并赋值给这个 static 属性。如果不为空,就返回这个指向实例的 static 属性。
//不能用new实例化的类.
程序运行结果为: $a1 的类是 A , $a2 是 A $a1 $a2 指向同一对象. 到此,我们写了一个最简单的单例模式 。 现在,你可以尝试写一个应用单例设计模式的数据库连接类。 要记住单例模式的使用效果和书写方式。 |

Article chaud

Outils chauds Tags

Article chaud

Tags d'article chaud

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

11 meilleurs scripts de raccourcissement d'URL PHP (gratuit et premium)

Travailler avec les données de session Flash dans Laravel

Construisez une application React avec un Laravel Back End: Partie 2, React

Misque de réponse HTTP simplifié dans les tests Laravel

Curl dans PHP: Comment utiliser l'extension PHP Curl dans les API REST

12 meilleurs scripts de chat PHP sur Codecanyon

Annonce de l'enquête sur la situation en 2025 PHP
