Я нашел проблему, которую я не могу найти решение. Я использую одноэлементный класс / метод, который возвращает один статический объект 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;
}
}
?>
PHP — это не Java, где вы можете определять значения свойств следующим образом.
Что вы можете сделать здесь, это просто поместить инициализацию свойства в contructor
, как это:
private static $connection;
public function __construct($id, $name)
{
$this->Id = $id;
$this->Name = $name;
self::$connection = Database::Connect();
}
Когда вы определяете свойство класса в PHP, вы не можете установить его значение по умолчанию к экземпляру класса.
Других решений пока нет …