我发现了一个我无法找到解决方案的问题。我正在使用返回单个静态PDO对象的单例类/方法。当我尝试声明对象的静态引用(http://i.imgur.com/EhKZuVH.png)时,我得到http://i.imgur.com/jUPMQrO.png。我该如何解决这个问题?
游戏类:
<?php
include_once('functions.php');
include_once('database.php');
$_codeRegex = '^([a-zA-Z0-9]{4,7})$';
class Game
{
public $Id = "";
public $Name = "";
private static $connection = Database::Connect();
public function __construct($id, $name)
{
$this->Id = $id;
$this->Name = $name;
}
}
?>
我的单身人士课程:
<?php
require_once('config.php');
CONST CONNECTION_FORMAT = 'mysql:host=%1$s;dbname=%2$s;charset=utf8';
class Database
{
private static $cont = null;
public function __construct() {
exit('Initialize function is not excessible.');
}
public static function Connect()
{
if (self::$cont == null)
{
try
{
$pdoConstuct = sprintf(CONNECTION_FORMAT, DB_SERVER, DB_NAME);
self::$cont = new PDO($pdoConstuct, DB_USER, DB_PASS);
self::$cont->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT);
}
catch(PDOException $e) { return false; }
}
return self::$cont;
}
public static function Disconnect()
{
self::$cont = null;
}
}
?>
答案 0 :(得分:0)
PHP不是Java,你可以在这里定义属性值。
您可以在此处执行的操作只是将属性初始化放入contructor
,如下所示:
private static $connection;
public function __construct($id, $name)
{
$this->Id = $id;
$this->Name = $name;
self::$connection = Database::Connect();
}
在PHP中定义类属性时,无法将其默认值设置为类的实例。