PHP使用子变量在父类中创建类
我有三门课:PHP使用子变量在父类中创建类,php,Php,我有三门课: A类-父类 B类-儿童班 C类-A类中使用的类别 我想使用C类中的函数和子类中的变量 <?php class A { public function __construct() { $this->load(); } public function load() { $class = new C(); $class->test = $this->test;
<?php
class A
{
public function __construct()
{
$this->load();
}
public function load()
{
$class = new C();
$class->test = $this->test;
$this->c = $class;
}
}
class B extends A
{
public function __construct()
{
parent::__construct();
}
}
class C
{
public function display()
{
echo $this->test;
}
}
$b = new B();
$b->test = 1;
$b->c->display();
您的问题在于:
$class->test=$this->test代码>
您正在尝试使用尚未定义的属性,因为执行此操作时:
$b->test=1代码>
构造函数已经被调用,并且类中没有任何东西可以用B的test属性值更新C
你可以用几种不同的方法来解决这个问题
1) 在B的构造函数中发送值,并将其传递到整个链:
class A
{
public function __construct($test)
{
$this->load($test);
}
public function load($test)
{
$class = new C();
$class->test = $test;
$this->c = $class;
}
}
class B extends A
{
public function __construct($test)
{
parent::__construct($test);
}
}
class C
{
public function display()
{
echo $this->test;
}
}
$b = new B(123);
$b->c->display();
2) 向B添加将更新C属性的方法:
<?php
class A
{
public function __construct()
{
$this->load();
}
public function load()
{
$class = new C();
$this->c = $class;
}
}
class B extends A
{
public function __construct()
{
parent::__construct();
}
public function setTest($test)
{
$this->c->test = $test;
}
}
class C
{
public function display()
{
echo $this->test;
}
}
$b = new B();
$b->setTest(123);
$b->c->display();
谢谢您的帮助。我想我会坚持第一种方法。