如何使用链方法访问扩展 class 中的 public 变量?
How to access public variables in extended class using chain method?
我尝试了很多研究,但我找不到这个。我遇到的唯一问题是:class Daddy.
中的 $name 是空的
我尝试研究:how to access public variables in extended class 但他们似乎没有做过这样的事情。我就是不想re-declare爷爷Class里面的变量。我希望它可以在 Daddy Class.
内部访问
我有这个parentclass
<?php
class GrandPa
{
public $name;
public function name($name)
{
$this->name = $name;
return $this;
}
public function get()
{
$daddy = new Daddy;
return $daddy->displayGrandPaName();
}
}
?>
然后是扩展的:
<?php
class Daddy extends GrandPa // Inherited class
{
public function displayGrandPaName()
{
var_dump($this->name.'ss');
return $this->name;
}
}
?>
当我启动时:
<?php
$g = new GrandPa;
echo $g->name('aw')->get();
?>
它 var 转储:
string(2) "ss"
预期结果为:
awss
有关一些设计注意事项,请参阅我对该问题的评论。
你的问题是,虽然你设置了 $g
对象的 name
属性,但是你的 get
方法创建了一个全新的(因此,不同的) 对象,并从中获取名称。由于您尚未在该对象上设置 name
,因此它是空白的。这就是您所看到的。
很难最好地回答你的问题,因为我认为你的设计是错误的,但要从你的对象中获取 属性 的值,你的 get
方法应该是
public function get()
{
return $this->name;
}
您似乎想要做的更准确的例子是:
class GrandPa
{
public $name;
public function setName($name)
{
$this->name = $name;
return $this;
}
public function getName()
{
return $this->name;
}
}
class Daddy extends GrandPa
{
public function displayName()
{
var_dump($this->name.'ss');
return $this->name;
}
}
$d = new Daddy();
echo $d->setName('aw')->displayName();
我尝试了很多研究,但我找不到这个。我遇到的唯一问题是:class Daddy.
中的 $name 是空的我尝试研究:how to access public variables in extended class 但他们似乎没有做过这样的事情。我就是不想re-declare爷爷Class里面的变量。我希望它可以在 Daddy Class.
内部访问我有这个parentclass
<?php
class GrandPa
{
public $name;
public function name($name)
{
$this->name = $name;
return $this;
}
public function get()
{
$daddy = new Daddy;
return $daddy->displayGrandPaName();
}
}
?>
然后是扩展的:
<?php
class Daddy extends GrandPa // Inherited class
{
public function displayGrandPaName()
{
var_dump($this->name.'ss');
return $this->name;
}
}
?>
当我启动时:
<?php
$g = new GrandPa;
echo $g->name('aw')->get();
?>
它 var 转储:
string(2) "ss"
预期结果为:
awss
有关一些设计注意事项,请参阅我对该问题的评论。
你的问题是,虽然你设置了 $g
对象的 name
属性,但是你的 get
方法创建了一个全新的(因此,不同的) 对象,并从中获取名称。由于您尚未在该对象上设置 name
,因此它是空白的。这就是您所看到的。
很难最好地回答你的问题,因为我认为你的设计是错误的,但要从你的对象中获取 属性 的值,你的 get
方法应该是
public function get()
{
return $this->name;
}
您似乎想要做的更准确的例子是:
class GrandPa
{
public $name;
public function setName($name)
{
$this->name = $name;
return $this;
}
public function getName()
{
return $this->name;
}
}
class Daddy extends GrandPa
{
public function displayName()
{
var_dump($this->name.'ss');
return $this->name;
}
}
$d = new Daddy();
echo $d->setName('aw')->displayName();