[英]How access outside variables from within class?
我有两个类叫做A类和B类。我创建了'A'类。 在这个我创建一个'B'类。 如何从'B'类访问'A'类变量?
class A
{
var letter;
var writers;
function __construct()
{
$this-letter = 'SOMETHING';
$this->writers = new B;
}
}
class B extends Writers
{
function __construct()
{
parent::__construct();
echo $letter; //This is where i want to acces outside variable (CLASS 'A')
}
}
我希望我很清楚。 我只是OOP的新秀。 请帮我。
你不能,因为A中的$letter
未被公开 ,B不会扩展A.
如果您不想公开A的数据(重要的OOP原则之一),则应使用封装。 在A类中创建一个getter
public function getLetter()
{
return $this->letter;
}
然后在B的构造方法中,创建一个A的实例并使用所述的getter
$a = new A();
$letter = $a->getLetter();
如果你真的需要使用这个结构,我猜你可以这样做:
class A
{
var letter;
var writers;
function __construct()
{
$this-letter = 'SOMETHING';
$this->writers = new B($this);
}
}
class B extends Writers
{
var $a;
function __construct(A $a)
{
parent::__construct();
$this->a = $a;
echo $this->a->letter;
}
}
这样, B
将保存对其创建的A
对象的引用。 但是,如果可能,我建议您更改类拓扑。
你的B类需要以某种方式引用A对象。 你可以简单地添加到B:
class B extends Writers
{
private $a;
function __construct()
{
parent::__construct();
echo $letter; //This is where i want to acces outside variable (CLASS 'A')
}
public function A($a)
{
$this->a = $a;
}
}
接下来,让您的A对象为其B对象提供对自身的引用。
class A
{
var letter;
var writers;
function __construct()
{
$this-letter = 'SOMETHING';
$this->writers = new B;
$this->writers->A($this);
}
}
替代方案是静态方法。
很难确切地说出你想要什么,但正如我解释的那样:
class A extends Writers
{
var letter;
var writers;
function __construct()
{
$this-letter = 'SOMETHING';
$this->writers = new B;
}
}
class B extends A
{
function __construct()
{
parent::__construct();
echo $this->letter; //This is where i want to acces outside variable (CLASS 'A')
}
}
您可以使用静态变量。 像这样:
class A
{
static $letter;
function __construct()
{
self::$letter = 'SOMETHING';
}
}
$objA = new A();
class B
{
function __construct()
{
$letter = A::$letter;
echo $letter; //print SOMETHING
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.