【发布时间】:2016-03-14 10:21:30
【问题描述】:
我在 starttutorial.com 看到过这样的代码:
class Database
{
private static $dbName = 'crud_tutorial' ;
private static $dbHost = 'localhost' ;
private static $dbUsername = 'root';
private static $dbUserPassword = 'root';
private static $cont = null;
public function __construct() {
die('Init function is not allowed');
}
}
public static function connect()
{
// One connection through whole application
if ( null == self::$cont )
{
try
{
self::$cont = new PDO( "mysql:host=".self::$dbHost.";"."dbname=".self::$dbName, self::$dbUsername, self::$dbUserPassword);
}
catch(PDOException $e)
{
die($e->getMessage());
}
}
return self::$cont;
}
在包含这个类的 php 文件中间的某个地方。我看到了这行代码。
$pdo = Database::connect();
据我所知,在实例化此类的实例时会调用 __construct 方法。我的问题是,上面的代码会调用魔术方法吗?
【问题讨论】:
-
如果在
connect()方法中没有创建新的对象实例,则不会 - 本质上他们正在创建一个静态类:stackoverflow.com/questions/468642/…(可能这里的类示例是一个 sn-p) -
connect() 方法在哪里?
-
我的错,没有粘贴所有代码。现在完成编辑
-
你试过代码了吗??我相信它会起作用,但最好的方法是尝试它:o)但回答你的间接问题 - 构造函数不会被调用。
标签: php