PHP __construct()继承不起作用

时间:2016-12-27 02:40:28

标签: php oop inheritance subclass

我一直在墙上撞了一个多小时,在互联网上寻找解决方案(包括stackoverflow),但无法找到任何帮助,所以我决定问你们。 / p>

我有以下 classes.php 文件

<?php

class System {

    public $domain;

    public function __construct() {
        $this->domain = 'http://google.com';
    }

    public function getDomain() {
        echo $this->domain;
    }

}

class User extends System {

    public function __construct() {
        parent::__construct($this->domain);
    }

    public function getDomain() {
        echo $this->domain;
    }

}

我的 index.php 文件的代码是:

$system = new System();
$user = new User();
$system->getDomain();
$user->getDomain();

现在,上述解决方案有效,但它并不是我真正需要的。 我需要System类__construct()如下:

public function __construct($domain) {
        $this->domain = $domain;
    }

我希望能够从index.php页面动态设置域,例如:

$system = new System('http://google.com');

所以回顾一切:

我希望能够从构造函数中设置域,如下所示:

public function __construct($domain) {
        $this->domain = $domain;
    }

而不是

public function __construct() {
            $this->domain = 'http://google.com';
        }

1 个答案:

答案 0 :(得分:0)

事实是,我不太了解你想做什么,但我会这样做。

 class System {

        private $domain;

        protected function __construct($domain) {
            $this->domain = $domain;
        }

        protected function getDomain() {
            return $this->domain;
        }

    }

    class User extends System {

        public function __construct($domain) {
            parent::__construct($domain);
        }


    }

$user = new User('http://google.com');
echo $user->getDomain();