Başvuru hakkında PHP OOP

4 Cevap php

> $ B demek - bir $ obj-> $ a () ne yapar örnek ile açıklayabilir misiniz? Ben PHP OOP oldukça uzun bir süre kullandım ve bazı yerlerde bu yapıyı gördük ve sadece bu $ obj-> a () $; Hangi durumlarda bunu kullanmalıyım?

4 Cevap

$a = 'someMethod';
$b = 'someProperty';
$obj->$a()->$b;

eşittir:

$obj->someMethod()->someProperty;

variable variables hakkında daha fazlasını okuyun

$ A bir yönteme adıdır. Bu yüzden, $a = "myFunc", bu eşdeğer ise:

$obj->myFunc()->$b;

$ B özellik için bir referans gibi gözükmektedir. Yöntemi $b = "myProp", biz bu olduğu için değiştirebilirsiniz eğer, bir nesneyi döndürmek, yani görünür:

$obj->myFunc()->myprop;

Bu gerçekten anlaşılması için kötü şeklidir.

Bu $a() bir nesne döndürür ve bu $b nesne $a() döner üyesi olduğu anlamına gelir.

Her yöntem orijinal nesneyi döndüğünde bu method chaining denir, aynı nesnenin yüzden çeşitli yöntemler defalarca her çağırma önce $obj-> belirtmek zorunda kalmadan çağrılabilir.

Belirtildiği gibi gerçek terimi orijinal nesneyi, iste tam bir örnek sınıf döndürür, Fluent Interface olduğunu

Class Fluent {
public $var1; 
public $var2;

function setVar1($value) {
    $this->var1 = $value;
    return $this;
}

function setVar2($value) {
    $this->var2 = $value;
    return $this;
}

function getVars() {
    echo $this->var1 . $this->var2;
}
}

$fluent = new Fluent();
$fluent->setVar1("Foo")->setVar2("Bar")->getVars();

Açıkçası "filanca" dönecekleri.

HTH