【问题标题】:PHP abstract class constructor not workingPHP抽象类构造函数不起作用
【发布时间】:2012-09-02 17:37:15
【问题描述】:

我希望以这样的方式访问我的一些变量:

System->Config->URL

在本例中,“System”是我的核心类,“Config”是一个数组,“URL”是数组中的一个项目。这是我的“system.php”代码:

<?php

abstract class System {

    public $Config;

    public function __construct() {

        $this->Config = (object) array('URL' => 'localhost');
    }
}

echo System->Config->URL;

?>

当我运行上面的代码时,我只看到了这个:

Parse error: syntax error, unexpected '->' (T_OBJECT_OPERATOR), expecting ',' or ';'

这是指出我的echo 行。

现在,如果我消除抽象的想法,并使用这个,效果很好!

<?php

class System {

    public $Config;

    public function __construct() {

        $this->Config = (object) array('URL' => 'localhost');
    }
}

$System = new System();
echo $System->Config->URL;

?>

我也尝试过混淆staticabstract 关键字,但这也没有用。我什至放弃了__construct 函数并创建了一个非常普通的方法,名为'Ready',但在定义类时仍然无法调用abstract

有人知道这里出了什么问题吗?我已经看到类似的代码效果很好。

任何帮助或想法将不胜感激!

【问题讨论】:

  • 你的类是抽象的,不是在第一个例子中启动的。
  • 好的,谢谢!我以为它不需要初始化! :D

标签: php oop constructor abstract-class abstract


【解决方案1】:

我不确定您要做什么。第二个例子有效,因为它是正确的。抽象类是您需要扩展的类,然后您可以实例化该(子)类,就像在您的工作示例中一样。

您可能需要阅读“抽象”的作用。

【讨论】:

    【解决方案2】:

    查看“抽象”类的定义。这是一个无法实例化的类。只有继承它的类才能被实例化。

    【讨论】:

    • 你一定在想一个静态类 ;)
    • 我只是看看别人的例子,看看他是怎么做到的,然后我想我就失去了意义。我在另一部分有一个错误,然后,一切都在一起了,这就是发生了! :D ...再次感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 2012-12-25
    • 1970-01-01
    • 2011-03-21
    • 1970-01-01
    • 2015-03-20
    • 2011-03-16
    相关资源
    最近更新 更多