基本上我有一堆继承的类。所以为了更好地说明我的观点:
IndexController extends fController extends fControllerAbstract extends
MoorActionController extends MoorAbstractController
因此,该组中最高的父级是MoorAbstractController。
在每个_ 构造()中,都有一个父:: _construct();除了最底层的子类 - IndexController
所以我遇到的问题是这个(我用一个奇怪的修复解决了,但我想知道发生了什么):
我在fController中有一个FieldController继承的字段成员,但由于一些奇怪的原因,该值不会传递下来。因此,在IndexController中回显$ this-> field_member不会输出任何内容。字段成员本身传递下来,但不传递它包含的值。我修复此错误的方法是在fController中的__construct()内部调用parent :: __ construct()。
更奇怪的部分是,当向上测试一级时(fControllerAbstract向下传递一个字段成员到fController)完全正常。我真的不确定发生了什么。
以下是一些代码:
//WORKS
class fController extends fControllerAbstract
{
protected $field_member = null;
public function __construct()
{
$this->field_member="asdasdas";
parent::__construct();
}
}
//DOESNT WORK
class fController extends fControllerAbstract
{
protected $field_member = null;
public function __construct()
{
parent::__construct();
$this->field_member = "asdasdas"; //value doesnt get passed
}
}
//IndexController/ // / //
class IndexController extends fController {
public function beforeAction()
{
}
public function home()
{
echo $this->field_member;
}
}
// fControllerAbstract ////////
class fControllerAbstract extends MoorActionController
{
public function __construct()
{
parent::__construct();
}
}
答案 0 :(得分:2)
在PHP 5.2和5.3上为我工作。你的问题在别处。仔细检查调用->home()
的代码。
abstract class fControllerAbstract
{
public function __construct()
{
}
}
class fController extends fControllerAbstract
{
protected $field_member = null;
public function __construct()
{
parent::__construct();
$this->field_member = "asdasdas"; //value doesnt get passed
}
}
class IndexController extends fController
{
public function beforeAction()
{
}
public function home()
{
echo $this->field_member;
}
}
$ic = new IndexController();
$ic->home(); // output: asdasdas