PHP结合$ this变量

时间:2013-09-09 10:43:59

标签: php

如何组合两个变量来获取/创建新变量?

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
}

两者都没有返回。

3 个答案:

答案 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();