嵌入式构造函数中的孤立php问题

时间:2013-09-04 10:31:51

标签: php

我有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。我已经放弃了。我该怎么做。

2 个答案:

答案 0 :(得分: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() 调用父方法的方法实现。没什么,没什么。

答案 1 :(得分:0)

问题:

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

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

parent::__construct(Array $config);