如果这是一个愚蠢的问题并且我有一个大脑放屁,我真的很抱歉,这似乎是我应该知道的事情。如果我的结构类似于以下,是否有某种方法可以在$fooVar
中获得Class bar
。我是否需要找到一些方法将$fooVar
作为参数传递,或者我可以利用哪些继承?如果可能的话,我想避免将其作为参数传递。 Class bar
扩展了另一个类,如果我将t作为参数传递,我必须做一些额外的工作。
非常感谢你的帮助。
Class foo{
$fooVar;
$bar = new bar()
}//end foo{}
Class bar extends AnotherClass{
echo $foo->fooVar;
}//end bar{}
答案 0 :(得分:2)
首先,我想说,我只是对php有所了解,但我认为这个问题可以适用于任何其他基于OOP的语言。所以我试着为你准备一些代码。他们是我所知道的4种不同的方法。 (我想考虑一下我没有测试下面的代码片段。)
在您的超类中访问$fooVar
的值。这具有实现效果,可以从任何其他可以调用get函数的类访问该值
像这样:
Class foo{
private $fooVar;
function __construct() {
$bar = new bar();
}
function getFooVar() {
return $fooVar;
}
}
Class bar extends foo{
function __construct() {
private $foo = parent::getFooVar(); //init $foo on instantiation by get-function
}
}
2。
$fooVar
声明为受保护的 make $fooVar
只能由其子类访问。
Class foo{
protected $fooVar;
function __construct() {
$bar = new bar();
}
}
Class bar extends foo{
function __construct() {
private $foo = parent::$fooVar; //init $foo on instantiation by parent
}
}
$fooVar
作为参数到您的子类构造函数。 (我完全清楚这不是你想要的,但我在此将其作为另一种解决方案并进行澄清。)
Class foo{
protected $fooVar;
function __construct() {
$bar = new bar($fooVar);
}
}
Class bar extends foo{
function __construct($var) {
private $foo = $var; //init $foo on instantiation with parameter
}
}
4
$fooVar
全局。(另一种解决方案,但没有推荐。)
我认为你使用get函数很顺利。从最后两个案例中,我会特别反对最后一个案例。
我真的希望这是你正在寻找的东西,它有很多帮助。