laravel では、self キーワードはクラス名を置き換えるために使用されます。これは、現在のクラスの静的メンバー変数と静的関数を参照できます。多態性の動作を抑制するためにも使用されます。次の関数を参照できます。サブクラスではなく現在のクラス。オーバーライドされた実装では、self は常に現在のクラスとクラス インスタンスを指します。
#この記事の動作環境: Windows 10 システム、Laravel バージョン 6、Dell G3 コンピューター。
laravel での self の使用法とは何ですか
this
を使用して静的メンバー関数内の非メンバー関数を呼び出すことはできませんが、self は使用できます
静的メンバー関数/変数/定数を呼び出すには、他のメンバー関数は self
を使用して静的メンバー関数と非静的メンバー関数を呼び出すことができます。議論が深まるにつれて、self
はそれほど単純ではないことがわかりました。これを考慮して、この記事では、まずいくつかのキーワードを比較および区別し、次に self
の使用法をまとめます。
と parent
、static
と this
の違い self# を完全に理解したい場合# # は、
parent 、
static および
this とは区別する必要があります。以下に比較を示します。
parent
self と
parent の区別は比較的簡単です。
parent は、親クラス/ 基本クラスの隠しメソッド (または変数)、
self は独自のメソッド (または変数) を参照します。たとえば、コンストラクター内で親クラスのコンストラクターを呼び出します。
class Base { public function __construct() { echo "Base contructor!", PHP_EOL; } } class Child { public function __construct() { parent::__construct(); echo "Child contructor!", PHP_EOL; } } new Child; // 输出: // Base contructor! // Child contructor!
static
static 一般的な目的は、関数または変数を次のように変更することです。これをクラス関数にすると、クラス変数は関数内の変数を変更して、そのライフサイクルをアプリケーション全体のライフサイクルに拡張することもできます。しかし、これは
self に関連しています。これは、PHP 5.3 以降に導入された新しい使用法です: 静的遅延バインディング。
staticの静的遅延バインディング関数を使用すると、実行時に所属クラスを動的に決定できます。例:
class Base { public function __construct() { echo "Base constructor!", PHP_EOL; } public static function getSelf() { return new self(); } public static function getInstance() { return new static(); } public function selfFoo() { return self::foo(); } public function staticFoo() { return static::foo(); } public function thisFoo() { return $this->foo(); } public function foo() { echo "Base Foo!", PHP_EOL; } } class Child extends Base { public function __construct() { echo "Child constructor!", PHP_EOL; } public function foo() { echo "Child Foo!", PHP_EOL; } } $base = Child::getSelf(); $child = Child::getInstance(); $child->selfFoo(); $child->staticFoo(); $child->thisFoo();プログラムの出力は次のとおりです:
Base constructor! Child constructor! Base Foo! Child Foo! Child Foo!関数参照の観点から見ると、
self と
static の違いは次のとおりです。静的メンバー関数の場合、
self はコードの現在のクラスを指し、
static は呼び出しクラスを指します。非静的メンバー関数の場合、
self はポリモーフィズムを抑制します。
static は現在のクラスのメンバー関数を指します。
static は
this
parent
、
self、
static
this
self
と
this
-
this
は静的メンバー関数では使用できませんが、
self は使用できます。静的メンバー関数 / 変数アクセスの場合、 - $this::
または
$this->;
## の代わりにself
を使用することをお勧めします。 # ではありません 静的メンバー変数にアクセスするには、 self - は使用できません。
this
のみです。オブジェクトが既に作成されている場合は、 this - を使用する必要があります。 、
self
にはこの制限はありません。は非静的メンバー関数内で使用され、
self - はポリモーフィックな動作を抑制し、現在の関数を参照します。 class; および
this
呼び出しクラス (存在する場合) のオーバーライド関数を参照します。
の目的 上記 3 つのキーワードの違いを読んだ後、
self の目的はすぐにわかりますか? ?一文で要約すると、self
は常に「現在のクラス (およびクラス インスタンス)」を指します。詳細は次のとおりです: <ol>
<li>クラス名を置換し、現在のクラスの静的メンバー変数と静的関数を参照します。</li>
<li>ポリモーフィックな動作を抑制し、オーバーライドされた実装ではなく、現在のクラスの関数を参照します。 </li>
</ol>
<h2 id="groove-point">groove point</h2>
<ol>
<li>これらのキーワードのうち、<code>this
のみ $
記号を追加する必要があり、強迫性障害とは、非常に不快であることを意味します。;
$this->
を介して非静的メンバー関数を呼び出すことはできませんが、呼び出すことはできます。 self::
を介して実行され、呼び出し元の関数には含まれていませんが、$this->
を使用してもスムーズに実行できます。この動作は、PHP のバージョンによって動作が異なるようです。現在の 7.3 では問題ありません。self
で出力されます。結果はどうなるでしょうか?どちらも string(4) "self"
で、混乱を招く出力です; return $thisinstanceof static::class;
構文エラーが発生しますが、次の 2 つは通常の書き方は次のとおりです: $class = static::class;
return $thisinstanceof $class;
// あるいは次のようになります:
return $thisinstanceof static;
[関連する推奨事項: laravel ビデオチュートリアル]
以上がLaravelでのselfの使用法は何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

LaravelはWebアプリケーションを迅速に構築するのに適していますが、Pythonはより広い範囲のアプリケーションシナリオに適しています。 1.Laravelは、Web開発を簡素化するために、Eloquentorm、Bladeテンプレートエンジン、職人ツールを提供します。 2。Pythonは、その動的なタイプ、リッチ標準ライブラリ、サードパーティのエコシステムで知られており、Web開発、データサイエンス、その他の分野に適しています。

LaravelとPythonにはそれぞれ独自の利点があります。Laravelは、機能が豊富なWebアプリケーションを迅速に構築するのに適しており、Pythonはデータサイエンスと一般的なプログラミングの分野でうまく機能します。 1.Laravelは、最新のWebアプリケーションの構築に適したEloquentormおよびBladeテンプレートエンジンを提供します。 2。Pythonには豊富な標準的な図書館とサードパーティライブラリがあり、DjangoとFlaskのフレームワークはさまざまな開発ニーズを満たしています。

Laravelは、コード構造を明確にし、開発プロセスをより芸術的にすることができるため、選択する価値があります。 1)LaravelはPHPに基づいており、MVCアーキテクチャに従い、Web開発を簡素化します。 2)Eloquentorm、Artisan Tools、Bladeテンプレートなどのコア機能は、開発の優雅さと堅牢性を高めます。 3)ルーティング、コントローラー、モデル、ビューを通じて、開発者はアプリケーションを効率的に構築できます。 4)キューやイベントモニタリングなどの高度な機能により、アプリケーションのパフォーマンスがさらに向上します。

Laravelは、バックエンドフレームワークであるだけでなく、完全なWeb開発ソリューションでもあります。ルーティング、データベース操作、ユーザー認証などの強力なバックエンド機能を提供し、フロントエンド開発をサポートし、Webアプリケーション全体の開発効率を向上させます。

LaravelはWeb開発に適しており、Pythonはデータサイエンスと迅速なプロトタイピングに適しています。 1.LaravelはPHPに基づいており、Eloquentormなどのエレガントな構文とリッチ機能を提供します。 2。Pythonは、そのシンプルさで知られており、Web開発とデータサイエンスで広く使用されており、豊富なライブラリエコシステムがあります。

laravelcanbeefeectiveivefectively-worldapplications for buildingscalablewebsolutions.1)その概要を説明することで、lastulavel'secosystem(toolslikenovaを含むlaravel'secosystem)を拡張します

バックエンド開発におけるLaravelのコア機能には、ルーティングシステム、Eloquentorm、移行機能、キャッシュシステム、キューシステムが含まれます。 1.ルーティングシステムは、URLマッピングを簡素化し、コードの組織とメンテナンスを改善します。 2.Eloquentormは、開発効率を改善するためにオブジェクト指向のデータ操作を提供します。 3.移行関数は、バージョン制御を介してデータベース構造を管理して、一貫性を確保します。 4.キャッシュシステムは、データベースクエリを削減し、応答速度を向上させます。 5.キューシステムは、大規模なデータを効果的に処理し、ユーザー要求のブロックを避け、全体的なパフォーマンスを改善します。

Laravelは、バックエンド開発で強く機能し、Eloquentorm、コントローラー、サービスクラスを介してデータベース操作を簡素化し、ビジネスロジックを処理し、キュー、イベント、その他の機能を提供します。 1)Eloquentormは、モデルを介してデータベーステーブルをマップしてクエリを簡素化します。 2)ビジネスロジックは、モジュール性と保守性を向上させるために、コントローラーとサービスクラスで処理されます。 3)キューシステムなどのその他の機能は、複雑なニーズの処理に役立ちます。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

ドリームウィーバー CS6
ビジュアル Web 開発ツール
