作者JYHuang (夏天到了,冷不起來了說)
看板PHP
標題[討論] PHP7後靜態呼叫時建立實體的方法
時間Fri Jun 12 08:57:08 2020
以前的PHP還可以在靜態method裡使用$this,不過新版的改掉了
所以前那種 $foo = foo::bar() 等同 $foor = new foor , $foo->bar();
的寫法在PHP7已經不可行了
class foo{
public function __construct(){
}
public static function bar(){
if(!isset($this)){
$foo = new foo;
return $foo->bar();
}
//
return blablabla..
}
}
不過看laravel卻可以讓method同時被靜態呼叫又被實體呼叫
$DB = DB::table('name');
$DB = new db ; $DB->table('name');
又是怎樣做到的呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 210.66.226.169 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/PHP/M.1591923430.A.E02.html
2F:推 Nitricacid: callStatic 06/13 01:43
3F:推 KKFN: return new self(...$args); 06/14 11:13
4F:→ KKFN: 原來大家在靜態回傳的時候是用$this嗎 O~O!? 06/14 11:13
5F:推 kroutony: 原理還是幫你new一個instance出來 06/14 19:58