gpt4 book ai didi

php - 访问子类中的父属性值

转载 作者:行者123 更新时间:2023-12-04 18:22:08 25 4
gpt4 key购买 nike

我有一个奇怪的问题,我在父类中设置值,但无法在扩展父类的子类中访问这些值。

class Parent
{
protected $config;

public function load($app)
{
$this->_config();
$this->_load($app);
}

private function _config()
{
$this->config = $config; //this holds the config values
}

private function _load($app)
{
$app = new $app();
$this->index;
}
}

class Child extends Parent
{
public function index()
{
print_r($this->config); // returns an empty array
}
}

$test = new Parent();
$test->load('app');

当我这样做时,我会打印出一个空数组。但是如果我这样做,那么我就可以访问这些配置值。
private function _load($app)
{
$app = new $app();
$app->config = $this->config
$app->index;

}


class Child extends Parent
{
public $config;
....
}

然后我可以从父级访问配置数据。

最佳答案

在初始化任何内容之前,您正在访问这些值。首先,您必须设置值。

例子:调用一个方法是父类,它设置值,放在子类的构造函数上。

class Child extends Parent
{
public function __construct() {
$this -> setConfig(); //call some parent method to set the config first
}
public function index()
{
print_r($this->config); // returns an empty array
}
}

更新:您似乎也对 OOP 的概念感到困惑
class Parent { ..... }
class child extends Parent { ..... }
$p = new Parent(); // will contain all method and properties of parent class only
$c = new Child(); // will contain all method and properties of child class and parent class

但是,您必须像在普通对象中一样使用父方法和属性。

让我们看另一个例子:
class Parent { 
protected $config = "config";
}
class Child extends Parent {
public function index() {
echo $this -> config; // THis will successfully echo "config" from the parent class
}
}

但另一个例子
class Parent { 
protected $config;
}
class Child extends Parent {
public function index() {
echo $this -> config; //It call upon the parent's $config, but so far there has been no attempt to set an values on it, so it will give empty output.
}
}

关于php - 访问子类中的父属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10440922/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com