Heim  >  Artikel  >  Backend-Entwicklung  >  使用了单例模式的类,有一些关于其静态成员的有关问题

使用了单例模式的类,有一些关于其静态成员的有关问题

WBOY
WBOYOriginal
2016-06-13 12:27:34804Durchsuche

使用了单例模式的类,有一些关于其静态成员的问题

本帖最后由 fox_lin 于 2015-11-16 17:08:20 编辑 如下单例模式的数据库类:
<br />class Database{<br />	static private $db;<br /><br />	private function __construct(){<br /><br />	}<br />	static function getInstance(){<br />		if(self::$db){<br />			return self::$db;<br />		}else{<br />			self::$db = new self();<br />			return self::$db;<br />		}<br />		<br />	}<br />}<br />

有一个说法是:静态方法不能调用非静态成员。
那么这个类的定义里有这么一句:self::$db = new self();这个self()方法不就是非静态的构造函数吗?
还是“静态方法不能调用非静态成员”这个说法是不准确的?请各位前辈指教一下。
------解决思路----------------------
self 和 $this 都是指类本身
只不过前者用于静态方法中,后者用于动态(实例化后的对象)方法中

new 是实例化类,构造函数不可能是静态的

注意,由于历史的原因,关闭掉 E_STRICT 级别检查,php 的类就没有静态不静态了
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:怎么建立临时会话Nächster Artikel:laravel5源码讲授整理