ホームページ バックエンド開発 PHPチュートリアル PHP中__get()和__set()的用法实例详解_PHP

PHP中__get()和__set()的用法实例详解_PHP

Jun 01, 2016 pm 12:06 PM
get set

php面向对象_get(),_set()的用法
一般来说,总是把类的属性定义为private,这更符合现实的逻辑。但是,对属性的读取和赋值操作是非常频繁的,因此在PHP5中,预定义了两个函数“__get()”和“__set()”来获取和赋值其属性。类似于java中的javabean的操作,使用的方法也类似,只是不需要像javabean中那样,对每个字段进行set和get的操作。只需要加上两个魔术方法即可。即私有成员的设值和取值的操作。在PHP5中给我们提供了专门为属性设置值和获取值的方法,“__set()”和“__get()”这两个方法,这两个方法不是默认存在的,而是我们手工添加到类里面去的,像构造方法(__construct())一样,类里面添加了才会存在,可以按下面的方式来添加这两个方法,当然也可以按个人的风格来添加:
复制代码 代码如下:
//__set()方法用来设置私有属性
public function __set($name,$value){
$this->$name = $value;
}
//__get()方法用来获取私有属性
public function __get($name){
return $this->$name;
}

__get()方法:这个方法用来获取私有成员属性值的,有一个参数,参数传入你要获取的成员属性的名称,返回获取的属性值,这个方法不用我们手工的去调用,因为我们也可以把这个方法做成私有的方法,是在直接获取私有属性的时候对象自动调用的。因为私有属性已经被封装上了,是不能直接获取值的,但是如果你在类里面加上了这个方法,在使用“echo$p1->name”这样的语句直接获取值的时候就会自动调用__get($name)方法,将属性name传给参数$name,通过这个方法的内部执行,返回我们传入的私有属性的值。如果成员属性不封装成私有的,对象本身就不会去自动调用这个方法。

__set()方法:这个方法用来为私有成员属性设置值的,有两个参数,第一个参数为你要为设置值的属性名,第二个参数是要给属性设置的值,没有返回值。这个方法同样不用我们手工去调用,它也可以做成私有的,是在直接设置私有属性值的时候自动调用的,同样属性私有的已经被封装上
了,如果没有__set()这个方法,是不允许的,比如:$this->name=‘zhangsan',这样会出错,但是如果你在类里面加上了__set($property_name, $value)这个方法,在直接给私有属性赋值的时候,就会自动调用它,把属性比如name传给$property_name,把要赋的值“zhangsan”传给$value,通过这个方法的执行,达到赋值的目的。如果成员属性不封装成私有的,对象本身就不会去自动调用这个方法。为了不传入非法的值,还可以在这个方法给做一下判断。代码如下:
复制代码 代码如下:
class Person
{
//下面是人的成员属性,都是封装的私有成员
private $name; //人的名子
private $sex; //人的性别
private $age; //人的年龄
//__get()方法用来获取私有属性
private function __get($property_name)
{
echo "在直接获取私有属性值的时候,自动调用了这个__get()方法
";
if(isset($this->$property_name))
{
return($this->$property_name);
}
else
{
return(NULL);
}
}
//__set()方法用来设置私有属性
private function __set($property_name, $value)
{
echo "在直接设置私有属性值的时候,自动调用了这个__set()方法为私有属性赋值
";
$this->$property_name = $value;
}
}
$p1=newPerson();
//直接为私有属性赋值的操作,会自动调用__set()方法进行赋值
$p1->name="张三";
$p1->sex="男";
$p1->age=20;
//直接获取私有属性的值,会自动调用__get()方法,返回成员属性的值
echo "姓名:".$p1->name."
";
echo "性别:".$p1->sex."
";
echo "年龄:".$p1->age."
";
?>

程序执行结果:
在直接设置私有属性值的时候,自动调用了这个__set()方法为私有属性赋值
在直接设置私有属性值的时候,自动调用了这个__set()方法为私有属性赋值
在直接设置私有属性值的时候,自动调用了这个__set()方法为私有属性赋值
在直接获取私有属性值的时候,自动调用了这个__get()方法
姓名:张三
在直接获取私有属性值的时候,自动调用了这个__get()方法
性别:男
在直接获取私有属性值的时候,自动调用了这个__get()方法
年龄:20
以上代码如果不加上__get()和__set()方法,程序就会出错,因为不能在类的外部操作私有成员,而上面的代码是通过自动调用__get()和__set()方法来帮助我们直接存取封装的私有成员的。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

MyBatis動的SQLタグのSetタグ機能の詳細説明 MyBatis動的SQLタグのSetタグ機能の詳細説明 Feb 26, 2024 pm 07:48 PM

MyBatis 動的 SQL タグの解釈: Set タグの使用法の詳細な説明 MyBatis は、豊富な動的 SQL タグを提供し、データベース操作ステートメントを柔軟に構築できる優れた永続層フレームワークです。このうち、Set タグは、UPDATE ステートメントで SET 句を生成するために使用され、更新操作でよく使用されます。この記事では、MyBatis での Set タグの使用法を詳細に説明し、特定のコード例を通じてその機能を示します。 SetタグとはMyBatiで使用するSetタグです。

PowerShell を使用してタスクを自動化する方法 PowerShell を使用してタスクを自動化する方法 Feb 20, 2024 pm 01:51 PM

IT 管理者またはテクノロジーの専門家であれば、自動化の重要性を認識している必要があります。特に Windows ユーザーにとって、Microsoft PowerShell は最高の自動化ツールの 1 つです。 Microsoft は、サードパーティのアプリケーションをインストールする必要なく、自動化のニーズに対応するさまざまなツールを提供しています。このガイドでは、PowerShell を活用してタスクを自動化する方法について詳しく説明します。 PowerShell スクリプトとは何ですか? PowerShell の使用経験がある場合は、コマンドを使用してオペレーティング システムを構成したことがあるかもしれません。スクリプトは、.ps1 ファイル内のこれらのコマンドの集合です。 .ps1 ファイルには、基本的な Get-Help など、PowerShell によって実行されるスクリプトが含まれています。

Java はどのようにして http リクエストを開始し、ポストを呼び出してインターフェースを取得するのでしょうか? Java はどのようにして http リクエストを開始し、ポストを呼び出してインターフェースを取得するのでしょうか? May 16, 2023 pm 07:53 PM

1. Java は post インターフェイスを呼び出します 1. Java に付属の URLConnection または HttpURLConnection を使用します 他の jar パッケージをダウンロードする必要はありません URLConnection を呼び出します インターフェイスの応答コードがサーバーによって変更されている場合、応答メッセージは受信できません。応答コードが正しい場合にのみ受信されます。 publicstaticStringsendPost(Stringurl,Stringparam){OutputStreamWriterout=null;BufferedReaderin=null;StringBuilderresult=newSt を返します。

JavaScriptでセットから要素を削除する方法 JavaScriptでセットから要素を削除する方法 Jan 12, 2022 am 10:56 AM

要素を削除するメソッド: 1. delete() を使用して Set オブジェクトから指定した要素を削除します (構文は "setObj.delete(value);" です); 2. Clear() を使用して Set オブジェクト内のすべての要素を削除します。構文は「setObj.delete(value);」「setObj.clear();」です。

Curl Getコマンドの例 Curl Getコマンドの例 Mar 20, 2024 pm 06:56 PM

Linux では、URL または Curl クライアントは、HTTPS、HTTP、FTP などのさまざまなプロトコルを使用してネットワーク上でデータを転送できるようにする一般的なコマンド ライン ユーティリティです。 get、post、request メソッドを使用してデータを送受信できるようになります。その中でも頻繁に使用する必要があるのが「get」メソッドです。したがって、生産性を向上させるために使用できるさまざまな方法やさまざまなオプションを学ぶことが重要になります。 「curl 操作の実行は、いくつかの簡単なコマンドを入力するだけで簡単です。簡単そうに見えますが、多くのユーザーはその可能性を十分に理解していません。そのため、この短いガイドでは、Linux システムでのcurl 操作の実行方法に関する情報を提供します。 「curlget」コマンド。」

Ubuntuのapt-getアップデートソースを変更するにはどうすればよいですか? Ubuntuのapt-getアップデートソースを変更するにはどうすればよいですか? Jan 05, 2024 pm 03:40 PM

Ubuntu の apt-get ソースを手動で変更する 1. ssh ツールを使用して Ubuntu に接続します (私は xshell を使用します) 2. コマンド ラインに cd/etc/apt/3 と入力し、このディレクトリ内のsource.list ファイルをバックアップします (必ずバックアップしてください)。 4. source.list ファイルの内容をクリアします (注: クリア後は復元できないため、前の手順を実行してファイルをバックアップする必要があります)このとき、sudo を使用して権限が不足していることを確認するメッセージが表示されます。直接 root ユーザーに切り替えてこのコマンドを実行します。 5. vim を使用してsource.list を開き、i キーを押して編集モードに入り、ファイルを貼り付けます。変更する送信元アドレスを選択し、 を押します。

jQuery の get メソッドと post メソッドの類似点と相違点の詳細な分析 jQuery の get メソッドと post メソッドの類似点と相違点の詳細な分析 Feb 24, 2024 pm 12:15 PM

Get と post は、jQuery でよく使用される 2 つの Ajax リクエスト メソッドであり、サーバーにリクエストを送信してデータを取得するために使用されます。これらには使用方法や機能の違いがいくつかありますが、次に、それらの類似点と相違点を詳細に説明し、具体的なコード例を添付します。 get と post の類似点: どちらも Ajax リクエストを送信するためのメソッドであり、URL と data パラメーターを指定することでサーバーからデータを取得できます。どちらもコールバック関数をパラメーターとして受け入れることができ、サーバーから返されたデータを処理したり、失敗したリクエストを処理したりするために使用されます。

Python プログラミングにおける dict と set の一般的な使用法の一覧表 Python プログラミングにおける dict と set の一般的な使用法の一覧表 Jul 25, 2023 pm 04:52 PM

この記事は Python の基礎をベースに dict と set の使い方を紹介します. キーと値の格納構造を使用した dict は Python で非常に便利です. キーとして不変のオブジェクトを選択することが重要です. 最も一般的に使用されるキーは文字列です。

See all articles