-1

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

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
}

两者都不返回。

4

3 回答 3

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
    }
}
于 2013-09-09T10:54:52.193 回答
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子项的属性分配为具有值“我的”。

如果要访问对象的单个属性,可以使用以下语法:

echo $diary->foo;

要访问对象内部对象的属性,您只需添加更多箭头:

echo $diary->owner->owner;
于 2013-09-09T10:53:14.107 回答
0

像这样?

$diary = $this->show_diary . '_diary';
return $this->$diary();
于 2013-09-09T10:53:01.773 回答