【发布时间】:2013-09-25 08:12:03
【问题描述】:
我有一个简单的单例类:
class controller {
// Store the single instance of controller
private static $_controller = null;
public static $user;
public static $db;
public static $page;
public static $code;
// construct the class and set up the user & db instances
private function __construct() {
self::$db = new db(HOST, USER, PASS, DB);
self::$user = new user();
self::$page = new page();
self::$code = new code();
}
// Getter method for creating/returning the single instance of this class
public static function getInstance() {
if (!self::$_controller) {
self::$_controller = new self();
}
return self::$_controller;
}
}
我这样调用(并测试)它:
$load = controller::getInstance();
print_r($load::$db->query('SELECT * FROM `users`'));
但是我从 PHP 中得到了这个错误:
Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM
此代码适用于 PHP 5.3,但不适用于运行 PHP 5.2 的服务器
这是怎么回事?
【问题讨论】:
-
请停止在您的代码中使用单例。此外,您可能会考虑到 php 5.3 已经有几个月不受支持(以及 5.2 - 超过 2 年前)。你真的应该更新你的服务器或转移到不同的主机。
-
您的实例不应具有
$db、$user、$page和$code等静态属性。实例应该具有对象属性。 -
这是您的确切代码的复制粘贴吗?这个错误通常意味着你有
:,你应该有:: -
如果更新服务器不是该开发人员的选项怎么办?当然,这是最好的解决方案,但并不总是可行的选择。
-
@tereško - 我们没有对当前服务器的物理访问权限,因为它由另一家公司托管。他们对这类事情非常敏感。我们正在使用我们自己的服务器迁移到不同的主机