目次
__set()
__get()
__isset()
__unset()
ホームページ バックエンド開発 PHPチュートリアル PHP の非一般メソッド _set()、get()、isset()、および _unset()

PHP の非一般メソッド _set()、get()、isset()、および _unset()

Jun 13, 2016 pm 12:11 PM
isset name property quot

PHP の特殊メソッド __set()、__get()、__isset() および __unset()

  • __set() メソッドは、プライベート プロパティ値を設定するために使用されます。
  • __get() メソッドは、プライベート属性値を取得するために使用されます。
  • __isset() メソッドは、プライベート属性値が設定されているかどうかを検出するために使用されます。
  • __unset() メソッドはプライベート属性を削除するために使用されます。

実際のアプリケーションではクラスの属性がprivateに設定されていることが多く、属性にアクセスする必要がある場合に面倒になります。プロパティへのアクセスはメソッドとして記述することができますが、PHP にはそのような操作を容易にする特別なメソッドがいくつか用意されています。

__set()

__set() メソッドはプライベート属性値を設定するために使用されます:

function __set($property_name, $value){     $this->$property_name = $value; }
ログイン後にコピー
ログイン後にコピー

クラスで __set() メソッドを使用した後、$ を使用する場合p1->name = "Zhang San"; この方法でオブジェクトのプライベート属性の値を設定すると、__set() メソッドが自動的に呼び出され、プライベート属性の値が設定されます。

__get()

__get() メソッドはプライベート属性値を取得するために使用されます:

function __set($property_name, $value){     return isset($this->$property_name) ? $this->$property_name : null;}
ログイン後にコピー
ログイン後にコピー

例:

<?phpclass Person {    private $name;    private $sex;    private $age;    //__set()方法用来设置私有属性    function __set($property_name, $value) {         echo "在直接设置私有属性&#20540;的时候,自动调用了这个 __set() 方法为私有属性赋&#20540;<br />";        $this->$property_name = $value;     }    //__get()方法用来获取私有属性    function __get($property_name) {          echo "在直接获取私有属性值的时候,自动调用了这个 __get() 方法<br />";        return isset($this->$property_name) ? $this->$property_name : null;    }}$p1=new Person();//直接为私有属性赋值的操作, 会自动调用 __set() 方法进行赋值$p1->name = "张三";//直接获取私有属性的值, 会自动调用 __get() 方法,返回成员属性的值echo "我的名字叫:".$p1->name;	?>
ログイン後にコピー
ログイン後にコピー

たとえば、出力:

在直接设置私有属性值的时候,自动调用了这个 __set() 方法为私有属性赋值在直接获取私有属性值的时候,自动调用了这个 __get() 方法我的名字叫:张三
ログイン後にコピー
ログイン後にコピー

__isset()

__isset() メソッドは、プライベート属性値が設定されているかどうかを検出するために使用されます。

オブジェクト内のメンバーがパブリックである場合は、isset() 関数を直接使用できます。プライベート メンバー属性の場合は、クラスに __isset() メソッドを追加する必要があります。

private function __isset($property_name){    return isset($this->$property_name);}
ログイン後にコピー
ログイン後にコピー

このように、クラスの外で isset() 関数を使用してプライベート メンバーかどうかを判断する場合、オブジェクトに が設定されている場合、自動的に __isset() メソッドが呼び出されて検出されます。

__unset()

__unset() メソッドは、プライベート属性を削除するために使用されます。

isset() 関数と同様に、unset() 関数はオブジェクトのパブリック メンバー属性のみを削除できます。オブジェクト内のプライベート メンバー属性を削除したい場合は、__unset() 関数を使用する必要があります。 ) メソッド:

private function __unset($property_name){    unset($this->$property_name);}
ログイン後にコピー
ログイン後にコピー
  • __set() メソッドは、プライベート プロパティ値を設定するために使用されます。
  • __get() メソッドは、プライベート属性値を取得するために使用されます。
  • __isset() メソッドは、プライベート属性値が設定されているかどうかを検出するために使用されます。
  • __unset() メソッドはプライベート属性を削除するために使用されます。

実際のアプリケーションではクラスの属性がprivateに設定されていることが多く、属性にアクセスする必要がある場合に面倒になります。プロパティへのアクセスはメソッドとして記述することができますが、PHP にはそのような操作を容易にする特別なメソッドがいくつか用意されています。

__set()

__set() メソッドはプライベート属性値を設定するために使用されます:

function __set($property_name, $value){     $this->$property_name = $value; }
ログイン後にコピー
ログイン後にコピー

クラスで __set() メソッドを使用した後、$ を使用する場合p1->name = "Zhang San"; この方法でオブジェクトのプライベート属性の値を設定すると、__set() メソッドが自動的に呼び出され、プライベート属性の値が設定されます。

__get()

__get() メソッドはプライベート属性値を取得するために使用されます:

function __set($property_name, $value){     return isset($this->$property_name) ? $this->$property_name : null;}
ログイン後にコピー
ログイン後にコピー

例:

<?phpclass Person {    private $name;    private $sex;    private $age;    //__set()方法用来设置私有属性    function __set($property_name, $value) {         echo "在直接设置私有属性&#20540;的时候,自动调用了这个 __set() 方法为私有属性赋&#20540;<br />";        $this->$property_name = $value;     }    //__get()方法用来获取私有属性    function __get($property_name) {          echo "在直接获取私有属性值的时候,自动调用了这个 __get() 方法<br />";        return isset($this->$property_name) ? $this->$property_name : null;    }}$p1=new Person();//直接为私有属性赋值的操作, 会自动调用 __set() 方法进行赋值$p1->name = "张三";//直接获取私有属性的值, 会自动调用 __get() 方法,返回成员属性的值echo "我的名字叫:".$p1->name;	?>
ログイン後にコピー
ログイン後にコピー

この例を実行します, 出力:

在直接设置私有属性值的时候,自动调用了这个 __set() 方法为私有属性赋值在直接获取私有属性值的时候,自动调用了这个 __get() 方法我的名字叫:张三
ログイン後にコピー
ログイン後にコピー

__isset()

__isset() メソッドは、private 属性値が設定されているかどうかを検出するために使用されます。

オブジェクト内のメンバーがパブリックである場合、isset() 関数を直接使用できます。プライベート メンバー属性の場合は、クラスに __isset() メソッドを追加する必要があります。

private function __isset($property_name){    return isset($this->$property_name);}
ログイン後にコピー
ログイン後にコピー

このように、クラスの外で isset() 関数を使用してプライベート メンバーかどうかを判断する場合、オブジェクトに が設定されている場合、自動的に __isset() メソッドが呼び出されて検出されます。

__unset()

__unset() メソッドは、プライベート属性を削除するために使用されます。

isset() 関数と同様に、unset() 関数はオブジェクトのパブリック メンバー属性のみを削除できます。オブジェクト内のプライベート メンバー属性を削除したい場合は、__unset() 関数を使用する必要があります。 ) メソッド:

private function __unset($property_name){    unset($this->$property_name);}
ログイン後にコピー
ログイン後にコピー
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

PHP 注意: 非オブジェクトのプロパティを取得しようとしています - 解決策 PHP 注意: 非オブジェクトのプロパティを取得しようとしています - 解決策 Aug 17, 2023 am 09:27 AM

PHP Notice: Tryingtogetpropertyofnon-object-Solution PHP 開発プロセス中に、「Tryingtogetpropertyofnon-object (非オブジェクトのプロパティを取得しようとしています)」という一般的なエラー メッセージが表示されることがあります。このエラーは通常、オブジェクト型ではない変数のプロパティにアクセスしようとした (またはメソッドを呼び出した) ときに発生します。この記事ではこれについて紹介します

PHP への解決策 注意: 未定義のプロパティ: PHP への解決策 注意: 未定義のプロパティ: Jun 22, 2023 pm 02:48 PM

PHP でコードを作成するときに、「通知: 未定義のプロパティ」というエラー メッセージが表示される場合があります。このエラーは、未定義のプロパティにアクセスしていることを意味します。通常、そのプロパティがコード内で初期化されていないことが原因です。では、この問題をどうやって解決すればよいでしょうか?考えられる解決策は次のとおりです。 プロパティを初期化する これは、この問題を解決する最も簡単な方法です。コード内でプロパティを明示的に初期化すると、使用前にプロパティが確実に定義されます。例: クラス

PHPは、指定されたキーが配列内に存在するかどうかを判断します PHPは、指定されたキーが配列内に存在するかどうかを判断します Mar 21, 2024 pm 09:21 PM

この記事では、PHP が配列内に指定されたキーが存在するかどうかを判断する方法について詳しく説明します。編集者が非常に実用的であると考えたので、参考として共有します。この記事を読んで何かを得ることができれば幸いです。 PHP は、指定されたキーが配列内に存在するかどうかを判断します。 PHP では、指定されたキーが配列内に存在するかどうかを判断する方法が数多くあります。 1. isset() 関数を使用します: isset($array[&quot;key&quot;]) この関数ブール値を返します。指定されたキーが存在する場合は true、存在しない場合は false。 2. array_key_exists() 関数を使用します: array_key_exists(&quot;key&quot;,$arr)

TypeError: Vue で null のプロパティ 'XXX' を読み取れません。どうすればよいですか? TypeError: Vue で null のプロパティ 'XXX' を読み取れません。どうすればよいですか? Nov 25, 2023 pm 01:21 PM

Vue は、ユーザー インターフェイスを構築するための人気のある JavaScript フレームワークです。開発プロセス中に、さまざまなエラーや例外が発生することがあります。よくあるエラーの 1 つは、「TypeError:Cannotreadproperty'XXX'ofnull」です。この記事では、このエラーの原因とその修正方法について説明します。まず、このエラーの背後にある理由を理解しましょう。オブジェクトのプロパティまたはメソッドにアクセスしようとすると、そのペアが

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 Jun 13, 2016 am 10:23 AM

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

TypeError: Vue で未定義のプロパティ '$XXX' を読み取れません。解決策は何ですか? TypeError: Vue で未定義のプロパティ '$XXX' を読み取れません。解決策は何ですか? Nov 25, 2023 am 10:00 AM

TypeError:Vue で定義されていないプロパティ '$XXX' を読み取れません。解決策は何ですか? Vue 開発では、TypeError:Cannotreadproperty'$XXX'ofundefine などのエラーが頻繁に発生します。このエラーは通常、Vue インスタンスで未定義のプロパティまたはメソッドを使用したことが原因で発生します。このエラーが発生した場合、次のことを行う必要があります。

TypeError: Vue で未定義のプロパティ 'XXX' を読み取れません。どうすればよいですか? TypeError: Vue で未定義のプロパティ 'XXX' を読み取れません。どうすればよいですか? Nov 25, 2023 am 10:56 AM

TypeError:Vue で定義されていないプロパティ 'XXX' を読み取れません。どうすればよいですか? Vue を使用して開発するフロントエンド開発者は、開発プロセス中に TypeError:Cannotreadproperty'XXX'ofunknown エラーに遭遇することがよくあります。このエラーは通常、未定義のプロパティにアクセスしようとしたときに発生します。存在する

TypeError: Vue プロジェクトで未定義のプロパティ 'XXX' を読み取れません。どのように対処すればよいですか? TypeError: Vue プロジェクトで未定義のプロパティ 'XXX' を読み取れません。どのように対処すればよいですか? Nov 25, 2023 pm 12:29 PM

Vue プロジェクトで発生した TypeError:Cannotreadproperty'XXX'ofunknown に対処する方法は? Vue の開発プロセス中に、TypeError:Cannotreadproperty'XXX'ofundefine などのエラーが頻繁に発生します。このエラーは通常、コード内の未定義のプロパティにアクセスしようとしたことが原因で発生します。この記事では、

See all articles