<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                https://ashallendesign.co.uk/blog/php-magic-constants PHP提供了9個魔術常數,您可以在PHP應用程序代碼中使用。 它們是“神奇的”,因為它們是在編譯時定義的,不像常規常量(您可以自己定義)是在運行時定義的。這意味著它們的值可以根據它們在代碼中的使用位置而更改。 ## __FUNCTION__ `__FUNCTION__`魔術常量返回使用它的函數的名稱。如果在函數或方法之外使用它,它將返回空字符串。 ### 在函數中使用`__FUNCTION__` 假設你有一個名為`myFunction`的函數: ``` function myFunction() { echo __FUNCTION__; } ``` 調用上面的函數將輸出:`myFunction`。 ### 在類方法中使用`__FUNCTION__` 假設你有一個類,它有一個名為`myMethod`的方法: ``` class MyClass { public function myMethod() { echo __FUNCTION__; } } ``` 調用`myMethod`方法將輸出:`myMethod`。 ### 在匿名函數中使用`__FUNCTION__` 假設你有一個匿名函數: ``` $myFunction = function () { echo __FUNCTION__; }; ``` 調用`$myFunction`變量將輸出:`{closure}`。 ## `__METHOD__` `__METHOD__`魔術常量返回使用它的方法的名稱和編寫它的類。如果在函數或方法之外使用它,它將返回空字符串。 ### 在類方法中使用`__METHOD__` 假設您有一個`App\Utilities\MyClass`類,其方法名為`myMethod`: ``` namespace App\Utilities; class MyClass { public function myMethod() { echo __METHOD__; } } ``` 調用`myMethod`方法將輸出:`App\Utilities\MyClass::myMethod`。 ### 在父類方法中使用`__METHOD__` 常量返回常量所在的類和方法名。這意味著如果你在父類中使用`__METHOD__`,任何子類都將使用父類的名稱。 例如,假設你有一個名為`App\Utilities\ParentClass`的父類: ``` namespace App\Utilities; class ParentClass { public function myMethod() { echo __METHOD__; } } ``` 你有一個名為`App\Utilities\ChildClass`的子類,它擴展了`App\Utilities\ParentClass`類: ``` namespace App\Utilities; class ChildClass extends ParentClass { // ... } ``` 調用`(new ChildClass())->myMethod()`方法將輸出:`App\Utilities\ParentClass::myMethod`。 ### 在函數中使用`__METHOD__` 如果你在一個函數中調用`__METHOD__`,輸出將與`__FUNCTION__`相同。所以它只會輸出函數的名稱。 類似地,如果你在一個匿名函數中調用`__METHOD__`,輸出將與`__FUNCTION__`相同。所以它只會輸出`{closure}`。 ## `__CLASS__` `__CLASS__`魔術常量返回使用它的類的名稱。如果在類外使用它,它將返回一個空字符串。 ### 在類方法中使用`__CLASS__` 假設你有以下代碼: ``` namespace App\Utilities; class MyClass { public function myMethod() { echo __CLASS__; } } ``` 調用`myMethod`方法將輸出:`MyClass`。 ### 在父類中使用`__CLASS__` 與`__METHOD__`魔術常量類似,`__CLASS__`常量將返回寫入它的類的名稱。這意味著如果你在父類中使用`__CLASS__`,那么父類的名字將被使用,而不是子類的名字。 例如,假設你有一個名為`App\Utilities\ParentClass`的父類: ``` namespace App\Utilities; class ParentClass { public function myMethod() { echo __CLASS__; } } ``` 你有一個名為`App\Utilities\ChildClass`的子類,它擴展了`App\Utilities\ParentClass`類: ``` namespace App\Utilities; class ChildClass extends ParentClass { // ... } ``` 調用`(new ChildClass())->myMethod()`方法將輸出:`App\Utilities\ParentClass`。 ### 在Trait中使用`__CLASS__` 如果在trait中使用了`__CLASS__`常量,它將返回使用trait的類的名稱。 例如,假設你有一個名為`MyTrait`的trait: ``` namespace App\Utilities; trait MyTrait { public function myMethod() { echo __CLASS__; } } ``` 你有一個名為`MyClass`的類,它使用了`MyTrait`trait: ``` namespace App\Utilities; class MyClass { use MyTrait; } ``` 調用`(new MyClass())->myMethod()`方法將輸出:`App\Utilities\MyClass`。 ## ::class `::class`魔術常量返回類的完全限定類名。 這是我發現自己使用最多的魔法常數,特別是在Laravel應用程序中。當您使用字符串形式的類名時,它特別有用。 假設你有下面的類,`App\Utilities\MyClass`: ``` namespace App\Utilities; class MyClass { // ... } ``` 調用`App\Utilities\MyClass::class`將輸出:`App\Utilities\MyClass`。 ### 在Laravel中使用`::class` 如果你是一個Laravel開發者,你會看到這個常量以前用于定義路由和模型關系。 例如,要在Laravel中定義一個web路由,你可以在你的`routes/web.php`文件中這樣做: ``` use App\Http\Controllers\UserController; Route::get('/users', [UserController::class, 'index']); ``` 注意我們是如何使用`::class`常量來引用`UserController`類的,這將給我們`App\Http\Controllers\UserController`。 類似地,當在Laravel模型中定義關系時,你可以這樣做: ``` namespace App\Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\HasMany; class User extends Model { public function posts(): HasMany { return $this->hasMany(Post::class); } } ``` 在上面的例子中,我們使用`::class`常量來獲取`Post`模型類的完全限定名,這將給我們`App\Models\Post`。 ## __TRAIT__ `__TRAIT__`magic常量返回使用它的trait的完全限定名。如果在trait之外使用,它將返回一個空字符串。 例如,假設我們有以下特質: ``` namespace App\Utilities; trait MyTrait { public function myMethod() { echo __TRAIT__; } } ``` 我們有一個使用`MyTrait`trait的類: ``` namespace App\Utilities; class MyClass { use MyTrait; } ``` 調用`(new MyClass())->myMethod()`方法將輸出:`App\Utilities\MyTrait`。 ## __NAMESPACE__ `__NAMESPACE__`魔術常量返回當前使用它的命名空間。如果文件不在命名空間中,它將返回空字符串。 例如,假設我們有以下代碼: ``` namespace App\Utilities; echo __NAMESPACE__; ``` 運行上面的代碼會輸出:`App\Utilities`。 與`__METHOD__`和`__CLASS__`魔術常量類似,`__NAMESPACE__`常量將返回寫入它的文件的名稱空間。 例如,假設你有一個名為`App\Utilities\ParentClass`的父類: ``` namespace App\Utilities; class ParentClass { public function myMethod() { echo __NAMESPACE__; } } ``` 你有一個名為`App\Utilities\Child\ChildClass`的子類,它擴展了`App\Utilities\ParentClass`類: ``` namespace App\Utilities\Child; class ChildClass extends ParentClass { // ... } ``` 運行`(new ChildClass())->myMethod()`方法將輸出:`App\Utilities`。 ## __LINE__ `__LINE__`魔術常量返回使用它的文件的當前行號。 例如,假設我們有以下代碼: ``` <?php // An empty line... echo __LINE__; ``` 運行上面的代碼將輸出`5`,因為`echo __LINE__;`語句位于文件的第5行。 ## __FILE__ `__FILE__`魔術常量返回使用它的文件的完整路徑和文件名。 例如,假設我們在位于`/Users/ashleyallen/my-app/index.php`的文件中有以下代碼 ``` echo __FILE__; ``` 運行上面的代碼將輸出`/Users/ashleyallen/my-app/index.php`。 ## __DIR__ `__DIR__`魔術常量返回使用它的文件的目錄。 例如,假設我們在位于`/Users/ashleyallen/my-app/index.php`的文件中有以下代碼 ``` echo __DIR__; ``` 運行上面的代碼將輸出`/Users/ashleyallen/my-app`。 值得注意的是,除非目錄是根目錄,否則`__DIR__`常量不包含尾隨斜杠。 您也可以使用`dirname(__FILE__)`實現與`__DIR__`相同的值。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看