PHP içinde örneği oluşturmak ve (aynı satırda) bir komut yöntemini çağırmak mümkün mü?

3 Cevap php

Possible Duplicate:
In PHP, can you instantiate an object and call a method on the same line?

Bu mümkün mü?

Normalde, bu iki satır gerektirir:

$instance = new MyClass();
$variable = $instance->method();

PHP olası böyle bir şey mi?:

$variable = new MyClass()->method();

Tabii ki, ilk kod okunabilirliği ve temiz kod, vb için iyidir, ancak bunu küçültmek eğer ben sadece merak ediyordum. Yöntem, başka bir örneğini iade Belki de, örneğin, yararlı olabilir:

$instance = new MyClass()->methodThatReturnsInstance();

PHP içinde mümkün mü?

3 Cevap

Bir varsayılan örneğini oluşturur statik bir yöntem yapmak ve geri olabilir.

class Foo
{
     public static function instance() { return new Foo(); }
     ...
}

echo Foo::instance()->someMethod();

Sadece sözdizimsel şeker gibi ben gerçekten bu olsa tavsiye etmiyoruz. Sadece bir satır kesme ve okunabilirliği kaybediyoruz.

Sizin için sorduk özelliği PHP 5.4 edinilebilir. Burada PHP 5.4 yeni özelliklerin listesi:

http://docs.php.net/manual/en/migration54.new-features.php

Ve yeni özellikler listesinden ilgili bölümü:

Örnekleme üzerinde sınıf üyesi erişim eklenmiştir örneğin (Yeni Foo) -> bar ().