PHP5 Howto zincir nesneler: $ this-> foo-> bar-> baz ()

3 Cevap php

Nasıl PHP5 sınıflarında zincirleme nesneleri yapabilirim? Örnekler:

$myclass->foo->bar->baz();
$this->foo->bar->baz();
Not: $myclass->foo()->bar()->baz();

Ayrıca bakınız:
http://www.talkphp.com/advanced-php-programming/1163-php5-method-chaining.html

3 Cevap

Sürece $ sınıfım bir örneği kendisi bir üyesi / özelliğine sahip olarak sadece bu gibi çalışır.

class foo {
   public $bar;
}

class bar {
    public function hello() {
       return "hello world";
    }
}

$myclass = new foo();
$myclass->bar = new bar();
print $myclass->bar->hello();

Aslında bu sorular benim için bu Geo cevabı @ doğru olanıdır .... belirsiz.

Eğer (@ Anti-) olabilir diyor ne composition

Bu, benim için örnek:

<?php
class Greeting {
    private $what;
    private $who;


    public function say($what) {
    	$this->what = $what;
    	return $this;
    }

    public function to($who) {
    	$this->who = $who;
    	return $this;
    }

    public function __toString() {
    	return sprintf("%s %s\n", $this->what, $this->who);
    }

}

$greeting = new Greeting();
echo $greeting->say('hola')->to('gabriel'); // will print: hola gabriel

>

Böyle zincir işlev çağrıları için, genellikle işlevinden kendini (ya da bu) dönün.