如何组合两个变量来获取/创建新变量?
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
}
两者都没有返回。
答案 0 :(得分: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
}
}
答案 1 :(得分:1)
它几乎从您的问题看起来就像您在询问如何将简单变量转换为对象,然后如何让一个对象包含另一个对象。我可能会离开,但我希望不会:
首先,对象和简单变量之间的差异是什么?对象实际上是(通常)至少一个属性的集合,它有点像它中的变量,并且通常是对对象的属性执行操作的函数。基本上,对象就像一个复杂的变量。
在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
属性赋值为'My'。
如果要访问对象的单个属性,可以通过以下语法执行此操作:
echo $diary->foo;
要访问对象内对象的属性,只需添加更多箭头:
echo $diary->owner->owner;
答案 2 :(得分:0)
喜欢这个吗?
$diary = $this->show_diary . '_diary';
return $this->$diary();