[討論] PHP7後靜態呼叫時建立實體的方法

作者: JYHuang (夏天到了,冷不起來了說)   2020-06-12 08:57:08
以前的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');
又是怎樣做到的呢?
作者: zx4109 (阿仲)   2020-06-12 09:27:00
https://learnku.com/articles/6146 可以參考這篇看看
作者: Nitricacid (硝酸酸)   2020-06-13 01:43:00
callStatic
作者: KKFN (John)   2020-06-14 11:13:00
return new self(...$args);原來大家在靜態回傳的時候是用$this嗎 O~O!?
作者: kroutony (bingbing)   2020-06-14 19:58:00
原理還是幫你new一個instance出來

Links booklink

Contact Us: admin [ a t ] ucptt.com