Простой вопрос класса PHP относительно методов - PullRequest
4 голосов
/ 18 августа 2011

У меня простой вопрос относительно PHP классов.

Несколько раз я видел, как другие платформы классов и т. Д. Использовали вызовы методов, например.

$post->data->text();

Мне нравится эта функциональность, а не просто делать что-то подобное.

$post->dataReturnAsText();

Но я не совсем уверен, как они создали эту функциональность, чтобы иметь, возможно, «суб-метод»?Надеюсь, кто-то может указать мне в правильном направлении ....

Ответы [ 3 ]

2 голосов
/ 18 августа 2011

В приведенном вами примере нет ничего особенного:

<?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();
0 голосов
/ 18 августа 2011

вероятно, просто "данные" - это публичное свойство $ post, содержащее объект с текстовым свойством, например:

class Textable {
    public $text;

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

class Post {

  public $data;

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

}

это позволит вам сделать:*

конечно, правильный способ ООП - сделать свойство личным и разрешить доступ с использованием функции получения, но это помимо точки ...

0 голосов
/ 18 августа 2011

В этом случае данные являются просто атрибутом класса и содержат другой объект:

class data
{
    public function text()
    {
    }
}

class thing
{
    public $data;
}

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