设置和使用父类中的参数

时间:2015-06-13 08:08:51

标签: php class

有什么办法可以像我这样编写代码:

<?php

class BaseClass {   
    public $testvar;

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

class ChildClass1 extends BaseClass {
}

class ChildClass2 extends BaseClass {
}

$bc = new BaseClass('test1');
$cc1 = new ChildClass1();
$bc->testvar = 'test2';
$cc2 = new ChildClass2();

echo $cc1->testvar; // should echo 'test1'
echo $cc2->testvar; // should echo 'test2'
?>

我要问的原因是每次创建新的子类时都不必指定参数。我想这样做,所以我只需要指定一次参数(最好是在创建基类时)。

这可能吗?

1 个答案:

答案 0 :(得分:0)

面向对象编程的关键是每个实例都有自己的参数。

但有时你只想在整个应用程序中使用一次类。像数据库控制器或路由器。然后,您可以使用静态属性和方法:

class BaseClass {
    public static $testvar;

    public function __construct ($testvar) {
        self::$testvar = $testvar;
    }
}

请注意,静态$testvar的值在所有对象中都是相同的。你可以解决这个问题:&#34;

class BaseClass {
    public $testvar;
    public static $test_var;

    public function __construct ($testvar = '') {
        if (!empty($testvar)) {
            self::$test_var = $testvar;
        }

        $this->testvar = self::$test_var;
    }
}

class ChildClass1 extends BaseClass {
}

class ChildClass2 extends BaseClass {
}

$bc = new BaseClass('test1');
$cc1 = new ChildClass1();
echo $cc1->testvar; // should echo 'test1'

BaseClass::$test_var = 'test2';
$cc2 = new ChildClass2();

echo $cc1->testvar; // **should echo 'test1'**
echo $cc2->testvar; // should echo 'test2'