PHP における __set __get __isset __unset の使用法の概要 オブジェクト指向_PHP チュートリアル
PHP オブジェクト指向では __set __get __isset __unset などの使い方をよく見かけますが、なぜこれらが使われるのか分かりません。一つずつ使い方を紹介していきます。
一般的に言えば、クラス属性は常にプライベートとして定義してください。これはより現実的なロジックに沿ったものです。ただし、属性の読み取りと割り当ての操作は非常に頻繁に行われるため、PHP5 では、属性を取得して割り当てるための 2 つの関数「__get()」と「__set()」、および属性を確認するための「__isset」が事前定義されています。 )」と属性を削除するメソッド「__unset()」。
前のセクションでは、各属性の設定および取得メソッドを説明しました。PHP5 には、属性の値を設定および取得するための特別なメソッド「__set()」および「__get()」メソッドが用意されています。デフォルトで存在しますが、コンストラクター メソッド (__construct()) と同様に、これら 2 つのメソッドは次の方法で追加する場合にのみ存在します。 、個人的なスタイルに従って追加することもできます:
//__get() メソッドはプライベート プロパティを取得するために使用されます
コードは次のとおりです | コードをコピーします |
private function __get($ property_name)
|
__get() メソッド: このメソッドは、プライベート メンバー属性値を取得するために使用されます。パラメーターは、取得したいメンバー属性の名前で渡され、取得された属性値が返されます。このメソッドを手動で呼び出す必要はありません。これは、このメソッドをプライベート メソッドにすることもできるため、プライベート プロパティが直接取得されたときにオブジェクトによって自動的に呼び出されます。 private プロパティはカプセル化されているため、値を直接取得することはできません (例: "echo $p1->name" を直接取得するのは誤りです)。ただし、このメソッドをクラスに追加する場合は、「 「echo $p1->name」は値を直接取得し、__get($property_name) メソッドが自動的に呼び出され、このメソッドの内部実行を通じてプロパティ名がパラメータ $property_name に渡されます。渡した属性の値が返されます。メンバーのプロパティがプライベートとしてカプセル化されていない場合、オブジェクト自体はこのメソッドを自動的に呼び出しません。
__set() メソッド: このメソッドは、プライベート メンバー属性の値を設定するために使用されます。最初のパラメーターは、値を設定する属性の名前です。2 番目のパラメーターは、必要な値です。属性に設定する戻り値はありません。このメソッドは手動で呼び出す必要はなく、プライベート属性値を直接設定するときに自動的に呼び出されます。 __set() メソッドが存在しない場合は許可されません。例: $this->name='zhangsan' の場合、エラーが発生しますが、クラスに __set($property_name, $value) メソッドを追加すると、プライベート プロパティに値を直接割り当てることができます。呼び出されると自動的に呼び出され、$property_nameにnameなどの属性を渡し、$valueに代入する値「zhangsan」を渡します。このメソッドの実行により代入の目的は達成されます。メンバーのプロパティがプライベートとしてカプセル化されていない場合、オブジェクト自体はこのメソッドを自動的に呼び出しません。不正な値を渡さないように、このメソッドで判定することもできます。コードは次のとおりです:
コードをコピー | |||||||
コードは次のとおりです | コードをコピー |
private function __isset($nm)
|
__unset() メソッド: このメソッドを見る前に、まず「unset()」関数を見てみましょう。「unset()」の関数は、指定された変数を削除し、true を返すことです。変数が削除されます。では、オブジェクトの外部にあるオブジェクト内のメンバー属性を削除したい場合は、「unset()」関数を使用できますか? オブジェクト内のメンバー属性がパブリックである場合、この関数を使用して削除できます。オブジェクトのパブリック属性。オブジェクトのメンバー属性がプライベートである場合、同様に、オブジェクトに「__unset()」メソッドを追加する場合も同様です。 、オブジェクトのプライベート メンバー プロパティから削除できます。 「__unset()」メソッドをオブジェクトに追加した後、オブジェクトの外部で「unset()」関数を使用してオブジェクト内のプライベートメンバー属性を削除すると、「__unset()」関数が自動的に呼び出され、オブジェクト内のプライベート メンバー属性。このメソッドはクラス内でプライベートとして定義することもできます。次のコードをオブジェクトに追加するだけです:
コードをコピー | |
private function __unset($nm)
{ echo "クラス外で unset( を使用する場合) プライベート メンバーを削除するときに自動的に呼び出す関数 unset($this->$nm); } class Person { //以下は person のメンバー属性です private $name; age; //人の年齢 //__get() メソッドを使用して取得しますプライベートプロパティ プライベート関数 __get($property_name) { if(isset($this->$property_name) ) { return($this->$property_name); }else { return(NULL); } } //__set() メソッド プライベートプロパティの設定に使用されます プライベート関数 __set($property_name, $value) { //__isset()メソッド プライベート関数__isset($nm) { エコー"isset() 関数がプライベート メンバーを決定すると、自動的に return isset($this->$nm ; unset($this-> $nm); } } $p1=new Person(); $p1->name= "this is a person name"; // issetを使用する場合() 関数を使用してプライベート メンバーを測定すると、完了を支援するために __isset() メソッドが自動的に呼び出され、返される結果は true echo var_dump(isset($p1- >name)) です。" echo $p1->name." // unset() 関数を使用してプライベート メンバーを削除すると、自動的に呼び出されます_ _unset() メソッドは、 name を削除します private 属性 unset($p1->name); // は削除されているため、この行には出力はありません echo $p1-> ;name; ?> isset() 関数は、プライベートメンバーを測定するときに自動的に unset() がクラス外で使用される場合、関数は自動的に呼び出されますプライベート メンバー
www.bkjia.com |
技術記事
PHPのオブジェクト指向では __set __get __isset __unset などの使い方をよく見かけますが、なぜこれらが使われるのか分かりません...一つずつ紹介していきます

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHPは、シンプルな構文と高い実行効率を備えたWeb開発に適しています。 2。Pythonは、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。

PHPは死にかけていませんが、常に適応して進化しています。 1)PHPは、1994年以来、新しいテクノロジーの傾向に適応するために複数のバージョンの反復を受けています。 2)現在、電子商取引、コンテンツ管理システム、その他の分野で広く使用されています。 3)PHP8は、パフォーマンスと近代化を改善するために、JITコンパイラおよびその他の機能を導入します。 4)Opcacheを使用してPSR-12標準に従って、パフォーマンスとコードの品質を最適化します。

PHPの将来は、新しいテクノロジーの傾向に適応し、革新的な機能を導入することで達成されます。1)クラウドコンピューティング、コンテナ化、マイクロサービスアーキテクチャに適応し、DockerとKubernetesをサポートします。 2)パフォーマンスとデータ処理の効率を改善するために、JITコンパイラと列挙タイプを導入します。 3)パフォーマンスを継続的に最適化し、ベストプラクティスを促進します。

PHPでは、特性は方法が必要な状況に適していますが、継承には適していません。 1)特性により、クラスの多重化方法が複数の継承の複雑さを回避できます。 2)特性を使用する場合、メソッドの競合に注意を払う必要があります。メソッドの競合は、代替およびキーワードとして解決できます。 3)パフォーマンスを最適化し、コードメンテナビリティを改善するために、特性の過剰使用を避け、その単一の責任を維持する必要があります。

依存関係噴射コンテナ(DIC)は、PHPプロジェクトで使用するオブジェクト依存関係を管理および提供するツールです。 DICの主な利点には、次のものが含まれます。1。デカップリング、コンポーネントの独立したもの、およびコードの保守とテストが簡単です。 2。柔軟性、依存関係を交換または変更しやすい。 3.テスト可能性、単体テストのために模擬オブジェクトを注入するのに便利です。

SplfixedArrayは、PHPの固定サイズの配列であり、高性能と低いメモリの使用が必要なシナリオに適しています。 1)動的調整によって引き起こされるオーバーヘッドを回避するために、作成時にサイズを指定する必要があります。 2)C言語アレイに基づいて、メモリと高速アクセス速度を直接動作させます。 3)大規模なデータ処理とメモリに敏感な環境に適していますが、サイズが固定されているため、注意して使用する必要があります。

PHPは、$ \ _ファイル変数を介してファイルのアップロードを処理します。セキュリティを確保するための方法には次のものが含まれます。1。アップロードエラー、2。ファイルの種類とサイズを確認する、3。ファイル上書きを防ぐ、4。ファイルを永続的なストレージの場所に移動します。

JavaScriptでは、nullcoalescingoperator(??)およびnullcoalescingsignmentoperator(?? =)を使用できます。 1.??最初の非潜水金または非未定されたオペランドを返します。 2.??これらの演算子は、コードロジックを簡素化し、読みやすさとパフォーマンスを向上させます。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

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

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