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

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

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

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

本帖最后由 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 的类就没有静态不静态了
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:怎么建立临时会话Next article:laravel5源码讲授整理