Laravel元素不多
这是什么文章
请指出任何错误。
什么是魔术方法?
以下函数名称
所有魔术方法都必须声明为公共
PHP保留以__开头的函数名称作为特殊功能。如果不需要任何特殊功能,则不应以__开头函数名称。
参考:https://www.php.net/manual/ja/language.oop5.magic.php
如上所述,它是一个特殊功能。
这是在每个类的某个特定时间调用的函数。
请检查公式以查看何时将其称为
有很多,所以我将通过实际示例介绍其中一些
1 .__ construct()
每次创建新对象时,具有
构造函数方法的类都将调用此方法。这使您可以在使用对象之前进行必要的初始化。
如上所述,将在执行
示例
sample_construct.php
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php class Baby { public $birthDay; public function __construct() { $this->birthDay = date('Y-m-d H:i:s'); } } $baby = new Baby(); echo $baby->birthDay; // 現在の日時が出力される |
Laravel中的示例
如果在路由中指定了UserController中的方法,则将创建对象。
适用于多种方法中使用的DI或中间件适配
用户控制器
1 2 3 4 5 6 7 8 9 10 11 12 | class UserController extends Controller { public $service; public function __construct(\App\Services\UserService $service) { $this->middleware('auth'); $this->middleware('log')->only('index'); $this->service = $service; } } |
2. __destruct()
当没有对特定对象的引用时,将调用
析构函数方法。或者,将在脚本末尾无序调用它们。
如上所述,它将在对象被销毁或脚本完成时执行。
如果使用exit()停止脚本执行,则也会调用析构函数。
似乎文件的指针已打开和关闭,并在Guzzle,CurlHttpClient等中使用。
sample_destruct.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <?php class SampleFileOpen { public $handle; public function __construct($user,$pass) { // ファイル開く $this->handle = fopen('somefile.txt', 'r'); } public function __destruct() { fclose($handle); } } $file = new SampleFileOpen(); echo fgets($file->handle); //1行目が表示 // スクリプト終了したので、ファイルが自動で閉じられる |
3. __call(),__callStatic
__call()
在对象的上下文中执行不可访问的方法时调用
参数