关于方法的简单PHP类问题

时间:2011-08-18 15:51:28

标签: php class object methods

我有一个关于PHP类的简单问题。

我多次见过其他类框架等使用方法调用。

$post->data->text();

我喜欢这个功能,而不仅仅是做这样的事情。

$post->dataReturnAsText();

但是我不太确定他们是如何创建这个功能的,或许有一个'子方法'?希望有人能指出我正确的方向......

3 个答案:

答案 0 :(得分:2)

您提供的示例没有什么特别之处:

<?php

class Post{
    public $data;
}

class Data{
    public function text(){
    }
}

$post = new Post;
$post->data = new Data;
$post->data->text();

但是,您可能已经在方法链接的上下文中找到它(在JavaScript库中非常流行):

<?php

class Foo{
    public function doThis(){
        return $this;
    }

    public function doThat(){
        return $this;
    }
}

$foo = new Foo;
$foo->doThis()->doThat()->doThis();

答案 1 :(得分:0)

在这种情况下,数据只是类的一个属性,它包含另一个对象:

class data
{
    public function text()
    {
    }
}

class thing
{
    public $data;
}

$thing = new thing();
$thing->data = new data();
$thing->data->text();

答案 2 :(得分:0)

它可能仅仅是“数据”是包含具有文本属性的对象的$ post的公共属性,例如:

class Textable {
    public $text;

    function __construct($intext) {
      $this->text = $intext;
    } 
}

class Post {

  public $data;

  function __construct() {
      $data = new Textable("jabberwocky");
  } 

}

这将允许你这样做:

$post = new Post();
echo( $post->data->text ); // print out "jabberwocky"

当然正确的OOP方式是使属性私有并允许访问使用getter函数,但除此之外......