我在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方法。我的问题是,上面的代码会调用魔术方法吗?
答案 0 :(得分:1)
上面的代码会调用魔术方法吗?
否,因为__construct
只会在类实例化期间调用,如下所示。
$db = new Database();
实例化一个类的时间是调用__construct()
的时间。
通过将方法声明为static是您可以在不实例化数据库类的情况下使用该静态方法的时间,如
Database::connect()