作者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/cn.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