-1

我有 php:

public function __construct($config) {
    if (!session_id()) {
      session_start();
    }
    parent::__construct(Array $config) { // line no 52 
      if (!empty($config['sharedSession'])) {
        $this->initSharedSession();
      }
   }
 } 

我得到一个错误,说第 52 行应该是T_VARIABLE. 我已经放弃了。我该怎么办。

4

2 回答 2

2

PHP 中没有“嵌入式构造函数”之类的东西。您显示的代码只是无效的废话,简单明了。我不确定您来自哪种其他语言或您对 PHP 有什么期望,但它根本不做您想做的任何事情。

澄清重写方法的工作原理,因为这似乎是你想要做的:

class Foo {

    public function __construct($value) {
        echo $value;
    }

}


class Bar extends Foo {

    public function __construct($value) {
        echo $value . ' Bar';
    }

}


class Baz extends Foo {

    public function __construct($value) {
        echo $value . ' Baz';
        parent::__construct($value);
    }

}

new Foo(42);  // 42
new Bar(42);  // 42Bar
new Baz(42);  // 42Baz42

要覆盖子类中的方法,您只需在子类中实现同名的方法。因此,父级的同名方法被覆盖并且不再执行。您可以使用调用父级的方法实现parent::methodName()。不多也不少。

于 2013-09-04T12:45:00.473 回答
0

问题 :

parent::__construct(Array $config) {
    if (!empty($config['sharedSession'])) {
       $this->initSharedSession();
    }
}

你不能像这样调用父构造函数。你必须修改你的代码

parent::__construct(Array $config);
于 2013-09-04T10:37:13.737 回答