PHP の __set メソッドと __get メソッドとその応用シナリオの詳細な説明
PHP には、メンバー属性の読み取りおよび書き込み操作を制御するために使用される 2 つの非常に便利なマジック メソッド (__set および __get) があります。この記事では、これら 2 つのマジック メソッドの使用法と、PHP でのそれらのアプリケーション シナリオについて詳しく説明します。
__set メソッド
存在しないプロパティ、またはアクセスできないプロパティに値を割り当てると、PHP は自動的に __set メソッドを呼び出します。例:
class Person { private $name; public function __set($key, $value) { if ($key == 'name') { $this->name = $value; } } } $person = new Person(); $person->name = 'Lucas';
上の例では、クラス Person を作成し、クラス内にプライベート プロパティ $name を定義しました。また、渡された $key に基づいて設定する属性値を決定する __set メソッドも定義します。 $key が 'name' と等しい場合、渡された値が $name 属性に割り当てられます。
$person オブジェクトを作成し、それに name 属性の値を設定します。このプロパティはプライベートであるため、直接アクセスすることはできません。ただし、$person->name を通じて値を割り当てると、実際には __set メソッドが自動的に呼び出されます。
__get メソッド
__set メソッドと比較して、__get メソッドの方がよく使用されます。存在しない、またはアクセスできないプロパティの値を読み取ろうとすると、PHP は自動的に __get メソッドを呼び出します。例:
class Person { private $name; public function __get($key) { if ($key == 'name') { return $this->name; } } } $person = new Person(); echo $person->name;
上の例では、渡された $key に基づいて取得する属性値を決定する __get メソッドを定義しました。 $key が 'name' と等しい場合、$name 属性の値を返します。
$person オブジェクトを作成し、その name 属性の値を読み取ってみます。このプロパティはプライベートであるため、直接アクセスすることはできません。ただし、$person->name を通じてその値を取得すると、実際には __get メソッドが自動的に呼び出されます。
アプリケーション シナリオ
__set メソッドと __get メソッドを使用して、メンバー属性の読み取りおよび書き込み操作を制御できます。これは、コード、特にプライベート プロパティのアクセス制御とデータ検証を必要とするコードで非常に役立ちます。
以下は、__set メソッドと __get メソッドを使用してユーザーの名前と年齢属性の読み取りおよび書き込み操作を制御する User という名前の単純なクラスです。
class User { private $name; private $age; public function __set($key, $value) { switch ($key) { case 'name': $this->setName($value); break; case 'age': $this->setAge($value); break; } } public function __get($key) { switch ($key) { case 'name': return $this->name; break; case 'age': return $this->age; break; } } private function setName($name) { if (!is_string($name)) { throw new InvalidArgumentException('name must be a string'); } $this->name = $name; } private function setAge($age) { if (!is_int($age)) { throw new InvalidArgumentException('age must be an integer'); } $this->age = $age; } } $user = new User(); $user->name = 'Lucas'; $user->age = 26; echo $user->name; echo $user->age;
上の例では、次のように作成しました。 User クラスとその中に __set メソッドと __get メソッドを実装しました。また、ユーザーが入力した名前と年齢の属性の有効性をチェックするためのプライベート メソッド setName および setAge も定義します。
name 属性と age 属性に値を割り当てると、__set メソッドが自動的に呼び出されます。 __set メソッドでは、$key の値に基づいて代入操作を setName メソッドまたは setAge メソッドに委任します。
名前と年齢の属性を読み取ろうとすると、__get メソッドが自動的に呼び出されます。 __get メソッドでは、$key の値に基づいて、対応する属性値を取得します。
概要
__set メソッドと __get メソッドは、PHP 言語の 2 つの非常に便利なマジック メソッドです。これらは、特にアクセス制御とプライベート プロパティのデータ検証を必要とするコードで、メンバー プロパティの読み取りと書き込みを制御するために使用できます。読者の役に立つことを願って、いくつかのサンプル コードを通じてこれら 2 つのメソッドの基本的な使用法と応用シナリオをマスターしました。
以上がPHP の __set メソッドと __get メソッドとその応用シナリオの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホット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)

ホットトピック









PHP 8のJITコンピレーションは、頻繁に実行されるコードをマシンコードにコンパイルし、重い計算でアプリケーションに利益をもたらし、実行時間を短縮することにより、パフォーマンスを向上させます。

この記事では、PHPおよび緩和戦略におけるOWASPトップ10の脆弱性について説明します。重要な問題には、PHPアプリケーションを監視および保護するための推奨ツールを備えたインジェクション、認証の壊れ、XSSが含まれます。

この記事では、コードインジェクションのような脆弱性を防ぐために、PHPファイルのアップロードを確保することについて説明します。ファイルタイプの検証、セキュアストレージ、およびアプリケーションセキュリティを強化するエラー処理に焦点を当てています。

この記事では、PHPの対称的および非対称暗号化について説明し、適合性、パフォーマンス、セキュリティの違いを比較しています。対称暗号化はより速く、バルクデータに適していますが、非対称は安全なキー交換に使用されます。

この記事では、不正アクセスを防ぎ、ベストプラクティスの詳細、セキュリティ強化ツールの推奨を防ぐために、PHPで堅牢な認証と承認の実装について説明します。

この記事では、Token BucketやLeaky BucketなどのアルゴリズムやSymfony/Rate-Limiterなどのライブラリを使用するなど、PHPでAPIレート制限を実装するための戦略について説明します。また、監視、動的に調整されたレートの制限、および手をカバーします

PHPの準備されたステートメントは、SQLインジェクションを防止し、コンピレーションと再利用を通じてクエリパフォーマンスを改善することにより、データベースのセキュリティと効率を強化します。

この記事では、mysqlデータベースインタラクションのphpでmysqli_query()およびmysqli_fetch_assoc()関数について説明します。それは彼らの役割、違いを説明し、それらの使用の実用的な例を提供します。主な議論は、USINの利点に焦点を当てています
