PHP 5.4 の特性
Trait は PHP5.4 の新機能であり、PHP の多重継承に対するソリューションです。たとえば、2 つの抽象クラスを同時に継承するのは非常に面倒です。Trait はこの問題を解決するように設計されています。
使い方は簡単ですまず最初に、もちろん、PHP5.4 では trait キーワードが追加されました:
trait first_trait { function first_method() { /* Code Here */ } function second_method() { /* Code Here */ }}
同時に、クラスで Trait を使用したい場合は、use キーワードを使用します:
class first_class { // 注意这行,声明使用 first_trait use first_trait;}$obj = new first_class();// Executing the method from trait$obj->first_method(); // valid$obj->second_method(); // valid
同じクラスで複数の特性を使用できます:
trait first_trait{ function first_method() { echo "method1"; }}trait second_trait { function second_method() { echo "method2"; }}class first_class { // now using more than one trait use first_trait, second_trait;}$obj= new first_class();// Valid$obj->first_method(); // Print : method1// Valid$obj->second_method(); // Print : method2
同時に、特性を相互にネストすることもできます。例:
trait first_trait { function first_method() { echo "method1"; }}trait second_trait { use first_trait; function second_method() { echo "method2"; }}class first_class { // now using use second_trait;}$obj= new first_class();// Valid$obj->first_method(); // Print : method1// Valid$obj->second_method(); // Print : method2
トレイトで実装する必要がある抽象メソッドを宣言して、それを使用するクラスがそれを実装する必要があるようにすることができます:
trait first_trait { function first_method() { echo "method1"; } // 这里可以加入修饰符,说明调用类必须实现它 abstract public function second_method();}class first_method { use first_trait; function second_method() { /* Code Here */ }}
複数のトレイトを同時に使用すると必然的に競合が発生します。解決する。 PHP5.4 では、文法面から関連するキーワード構文を導入しています。 。注意すべき点がいくつかあります:
特性は、呼び出しクラスによって継承された親クラスのメソッドをオーバーライドします。特性は、クラスのように単一の特性をインスタンス化するために new を使用できません。単一のクラス内で複数の特性を使用できます。 . Trait は、final、static、abstract などの修飾子 (修飾子) をサポートしており、Traits 間の競合を解決するために、 replaceof および as 演算子を使用できます正直に言うと、最初に Trait を見たときは、良い印象はありませんでした。 PHP5 以降の新機能は十分にあり、開発者は少し圧倒されています。
同時に、Trait はプログラマにとっては「構文糖衣」に似ており、利便性を提供する一方で、大きな隠れた危険性を引き起こす可能性があります。 たとえば、Trait はクラス内のメンバーを呼び出すことができます:
trait first_trait { function first_function() { echo "From First Trait"; }}trait second_trait { // 这里的名称和 first_trait 一样,会有冲突 function first_function() { echo "From Second Trait"; }}class first_class { use first_trait, second_trait { // 在这里声明使用 first_trait 的 first_function 替换 // second_trait 中声明的 first_trait::first_function insteadof second_trait; }} $obj = new first_class();// Output: From First Trait$obj->first_function();
同時に、Trait はクラスに実装されているメソッドには影響しません:
trait Hello { public function sayHelloWorld() { echo 'Hello'.$this->getWorld(); } abstract public function getWorld();}class MyHelloWorld { private $world; use Hello; public function getWorld() { return $this->world; } public function setWorld($val) { $this->world = $val; }}
それでは、なぜ Trait が表示されるのでしょうか?友人の答えはもっと興味深いですが、不合理ではありません:
trait HelloWorld { public function sayHello() { echo 'Hello World!'; }}class TheWorldIsNotEnough { use HelloWorld; public function sayHello() { echo 'Hello Universe!'; }}$o = new TheWorldIsNotEnough();$o->sayHello(); // echos Hello Universe!
とはいえ、インターフェースと Trait の類似点を考慮すると、Trait の方がより便利であることは明らかです (ただし、この 2 つは互いに完全に置き換えることはできません)。
しかし、Trait がまだテスト段階にあることは明らかであり、その将来については PHP5 の他の新しく導入された機能よりも様子見の必要がありますが、おそらくこの機能は将来の PHP5 の継承方法を変える可能性があります。
参考リンク http://php.net/manual/en/ language.oop5.traits.php https://wiki.php.net/rfc/traits http://en.wikipedia.org/wiki/Trait_%28computer_programming %29 http://bbs.phpchina.com/thread-210870-1-1.html http://scg.unibe.ch/research/traits/ http://walu.sinaapp.com/?p=60 http ://www.phppan.com/2011/07/mixin-and-trait/
転載元: http://www.kuqin.com/web/20111119/315048.html

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

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

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Laravelは、直感的なフラッシュメソッドを使用して、一時的なセッションデータの処理を簡素化します。これは、アプリケーション内に簡単なメッセージ、アラート、または通知を表示するのに最適です。 データは、デフォルトで次の要求のためにのみ持続します。 $リクエスト -

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

Laravelは簡潔なHTTP応答シミュレーション構文を提供し、HTTP相互作用テストを簡素化します。このアプローチは、テストシミュレーションをより直感的にしながら、コード冗長性を大幅に削減します。 基本的な実装は、さまざまな応答タイプのショートカットを提供します。 Illuminate \ support \ facades \ httpを使用します。 http :: fake([[ 'google.com' => 'hello world'、 'github.com' => ['foo' => 'bar']、 'forge.laravel.com' =>

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

記事では、入力検証、認証、定期的な更新など、脆弱性から保護するためのフレームワークの重要なセキュリティ機能について説明します。
