如何结合两个变量来获取/创建新变量?
public $show_diary = 'my';
private my_diary(){
return 1;
}
public view_diary(){
return ${"this->"}.$this->show_diary.{"_diary()"}; // 1
return $this->.{"$this->show_diary"}._diary() // 2
}
两者都不返回。
如何结合两个变量来获取/创建新变量?
public $show_diary = 'my';
private my_diary(){
return 1;
}
public view_diary(){
return ${"this->"}.$this->show_diary.{"_diary()"}; // 1
return $this->.{"$this->show_diary"}._diary() // 2
}
两者都不返回。
您的课程应如下所示:
class Test
{
public $show_diary;
function __construct()
{
$this->show_diary = "my";
}
private function my_diary(){
return 707;
}
public function view_diary(){
echo $this->{$this->show_diary."_diary"}(); // 707
}
}
从您的问题来看,它几乎看起来就像您在询问如何将简单变量转换为对象,然后如何让一个对象包含另一个对象。我可能会走得很远,但我希望不会:
那么,首先,对象和简单变量有什么区别?对象实际上是(通常)至少一个属性的集合,这有点像其中的变量,并且通常是对对象的属性执行操作的函数。基本上,一个对象就像一个复杂的变量。
在 PHP 中,我们需要首先声明对象的结构,这是通过类语句完成的,我们基本上将对象的骨架放置到位。这是由class
语句完成的。但是,此时它还没有真正创建,它就像是稍后创建它时的计划一样。
创建是通过如下命令完成的:
$someVariable= new diary();
class
这会执行创建一个新变量,并使用语句中定义的结构、属性和函数对其进行布局。
从那时起,您可以访问其中的各种属性或调用函数。
class show_diary
{
public $owner;
public function __construct()
{
$this->owner='My';
}
}
class view_diary
{
public $owner;
public $foo;
public function __construct()
{
$this->foo='bar';
$this->owner=new show_diary();
}
}
$diary= new view_diary();
print_r($diary);
该代码为我们提供了两个类。其中一个类在其中包含另一个类的实例。
我使用了构造函数,这是一种特殊类型的函数,每次我们创建一个类的新实例时都会执行它——基本上每次我们声明该类型的变量时,__construct
都会调用该函数。
当$diary= new view_diary();
代码被调用时,它会创建一个类的实例view_diary
,在这样做的时候,它做的第一件事就是分配它自己的foo
属性以在其中包含值“bar”。然后,它将它的owner
属性设置为一个实例,show_diary
然后__construct
在新实例中启动该函数。这反过来将owner
子项的属性分配为具有值“我的”。
如果要访问对象的单个属性,可以使用以下语法:
echo $diary->foo;
要访问对象内部对象的属性,您只需添加更多箭头:
echo $diary->owner->owner;
像这样?
$diary = $this->show_diary . '_diary';
return $this->$diary();