İstediğini yapamazsın; fakat PHP'de sınıfla aynı ada sahip bir işleve sahip olabileceğiniz gerçeğini kullanarak "hile yapabilirsiniz"; bu isimler çelişmez.
Öyleyse, böyle bir sınıf ilan ettiyseniz:
class Test {
public function __construct($param) {
$this->_var = $param;
}
public function myMethod() {
return $this->_var * 2;
}
protected $_var;
}
Daha sonra, bu sınıfın bir örneğini döndüren ve sınıfla tam olarak aynı ada sahip bir işlev bildirebilirsiniz:
function Test($param) {
return new Test($param);
}
Ve şimdi, istediğiniz gibi tek satırlık kullanmak mümkün hale geliyor - tek şey işlevi çağırıyorsunuz, dolayısıyla yeniyi kullanmıyorsunuz:
$a = Test(10)->myMethod();
var_dump($a);
Ve işe yarıyor: burada, alıyorum:
int 20
çıktı olarak.
Ve daha iyisi, işlevinize biraz phpdoc koyabilirsiniz:
/**
* @return Test
*/
function Test($param) {
return new Test($param);
}
Bu şekilde, IDE'nizde ipuçlarına bile sahip olacaksınız - en azından Eclipse PDT 2.x ile; ekran görüntüsüne bakın:
Düzenleme 2010-11-30: Sadece bilgi amaçlı olarak, birkaç gün önce bu özelliği PHP'nin gelecek sürümlerinden birine eklemeyi öneren yeni bir RFC gönderildi.
Bkz .: Yorum İsteği: Örnek ve yöntem çağrısı / özellik erişimi
Öyleyse, belki bunun gibi şeyler yapmak PHP 5.4 veya başka bir gelecek sürümde mümkün olabilir:
(new foo())->bar()
(new $foo())->bar
(new $bar->y)->x
(new foo)[0]