ホームページ バックエンド開発 PHPチュートリアル PHP5マジックメソッドの呼び出し例_PHPチュートリアル

PHP5マジックメソッドの呼び出し例_PHPチュートリアル

Jul 13, 2016 pm 05:53 PM
php5 関数 物体 方法 時間 移行 魔法

PHP5 マジックメソッド

魔法の機能:

1. __construct()

コンストラクター: オブジェクトをインスタンス化するときに呼び出されます

__construct と、クラス名と関数名の付いたコンストラクターが同時に存在する場合、__construct が呼び出され、もう一方は呼び出されません。

2. __destruct()

デストラクター: オブジェクトが削除されるか、オブジェクト操作が終了するときに呼び出されます (オブジェクトはプログラム終了後に破棄されます)。

常に最後に実行されます。

3. __call()

オブジェクトがメソッドを呼び出します

メソッドが存在する場合は、それを直接呼び出します。

存在しない場合は、__call 関数が呼び出されます。

4. __get()

オブジェクトの属性を読み取る場合、属性が存在する場合は属性値が直接返され、存在しない場合は __get 関数が呼び出されます。

5. __set()

オブジェクトのプロパティを設定するときは、

属性が存在する場合は、値を直接割り当てます。

存在しない場合は、__set 関数が呼び出されます。

6. __toString()

オブジェクトを印刷するときに呼び出されます。 echo $obj; や print $obj; など
7。 __クローン()

オブジェクトのクローンを作成するときに呼び出されます。例: $t=new Test();$t1=clone $t;

8. __睡眠()

Serialize は以前に呼び出されました。オブジェクトが比較的大きく、シリアル化する前にいくつかのものを削除したい場合は、この関数を検討できます。

9. __ウェイクアップ()

これは、シリアル化を解除するときに呼び出され、オブジェクトに対して初期化作業を行います。

10. __isset()

オブジェクトのプロパティが存在するかどうかを確認するときに呼び出されます。例: isset($c->name)。

11. __unset()

オブジェクトのプロパティの設定を解除するときに呼び出されます。例: unset($c->name)。

12. __set_state()

var_export が呼び出されるときに呼び出されます。 __set_state の戻り値を var_export の戻り値として使用します。

13. __autoload()

オブジェクトをインスタンス化するときに、対応するクラスが存在しない場合は、このメソッドが呼び出されます。

魔法定数

1. __LINE__

ファイル内の現在の行番号を返します。

2. __ファイル__

ファイルのフルパスとファイル名を返します。インクルード ファイルで使用された場合は、インクルード ファイル名を返します。 PHP 4.0.2 以降、__FILE__ には常に絶対パスが含まれますが、以前のバージョンには相対パスが含まれる場合がありました。

3. __機能__

関数名を返します (PHP 4.3.0 の新機能)。 PHP 5 以降、この定数は関数が定義されたときの関数の名前を返します (大文字と小文字は区別されます)。 PHP 4 では、この値は常に小文字です。

4. __クラス__

クラスの名前を返します (PHP 4.3.0 の新機能)。 PHP 5 以降、この定数は定義されたときのクラスの名前を返します (大文字と小文字は区別されます)。 PHP 4 では、この値は常に小文字です。

5. __方法__

クラスのメソッド名を返します (PHP 5.0.0 で新しく追加されました)。定義されたとおりのメソッド名を返します (大文字と小文字が区別されます)。

(1)初めての魔法のメソッド紹介

Php5.0 のリリース以来、多くのオブジェクト指向機能、特に多くの使いやすいマジック メソッドが提供され、コーディングを簡素化し、システムをより適切に設計できるようになりました。今日はphp5.0が提供するマジックメソッドについて学びます。

PHP | マジックメソッド | __toString(),__clone(),__call(),__autoload() の詳細説明

__toString()

クラスがある場合:

クラス人

{

プライベート $name = "";

プライベート $age = 0;

function __construct($name = “”, $age = “”)

{

$this->name = $name;

$this->年齢 = $年齢;

}

関数say()

{

echo "name:".$this->name."
"."age:".$this->age."
";
}

}

次に、このクラスをインスタンス化して、このインスタンスを出力します。

$p1 = 新しい人(“liuzy”,20);

echo $p1; //直接印刷するとエラーが発生します

オブジェクトは参照ハンドルであり、直接印刷できないため、オブジェクトを直接印刷するとエラーが発生することは明らかです。このとき、__toString() メソッドを使用できます。 __toString() メソッドを Person クラスに追加します。

関数__toString()

{

return "私は人物です、私の名前は ".$this->name."
";

}

次に、ページを更新してください。何が見つかりましたか?

__toString() はオブジェクトを直接出力するときに実行されるメソッドであることがわかりました。このメソッドを使用して、クラスに関するいくつかの関連情報を出力できます。注: これは 2 つのアンダースコアであり、メソッドには戻り値が必要です。

__クローン()


など、オブジェクトに値を直接割り当てることができることはわかっています。
$p2 = $p1; //これは 2 つの参照を持つオブジェクトです

次に、次を実行します:

$p1->say();

$p2->say();

どちらも実行でき、同じ効果があります。

別の方法もあります:

$p3 = clone $p1; //clone が上記と異なる点は、$p3 が新しいオブジェクトであることです。

同時に、クラスにメソッドを追加します:

関数 __clone()

{

$this->name = "私はコピーです"; //注: ここでの $this は、現在のクラスではなく、クローン作成によって生成されたオブジェクトそのものです

}

次に、次を実行します:

$p3->say();

プリントアウト:

名前: 私はコピーです

年齢:20歳

この時点で、 __clone() メソッドは、オブジェクトのクローンを作成するときに実行されるメソッドであり、その機能は新しくクローンされたコピーをクローンすることであることがわかります

属性の初期化やその他の操作を実行します。

__call()

このメソッドの主な機能は、このクラスのインスタンスが存在しないメソッドを呼び出すときに __call() メソッドを実行することです。事前にクラスに参加する必要があることに注意してください

ステートメント:

関数 __call($fname,$argus)

{

echo "呼び出したメソッド: ".$fname." は存在しません
";

echo "パラメータは".print_r($argus);

}

宣言には 2 つのパラメータが含まれており、最初のパラメータは文字列型であり、呼び出される存在しないメソッドのメソッド名です ($fname)。
配列型は、呼び出された存在しないメソッドのパラメータ ($argus) です。

__autoload()

通常、クラスを呼び出すときは、まずそのクラスが配置されているファイル (「xxx.php」をインクルード) を導入する必要があります。1 つのページで多数のクラスを呼び出す場合は、「xxx.php.php」を多数使用する必要があります。 。明らかにこれは面倒です。

__autoload() メソッドは、この問題の解決に役立ちます。

たとえば、上記の Person クラスが配置されているファイルを Person_class.php として定義します。

新しい php ファイル test.php を作成し、内容を編集します:

関数 __autoload($calssName)

{

include $className.”_class.php”; //これを見たら分かるかも知れませんね?笑

}

$p = 新しい人(“ミファン”, 22);

$p->say();

この方法では、test.php ページの実行時にエラーは発生しません。

__autoload() メソッドは、クラスが存在しない場合に呼び出されるメソッドで、存在しないクラスのクラス名を宣言する文字列型パラメータを持ちます。

もちろん、クラスファイルの命名にも非常にこだわりがあります。 Person_class.php など、クラスと関連するものを用意するのが最善です


http://www.bkjia.com/PHPjc/478060.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/478060.html技術記事 PHP5 マジックメソッド マジック関数: 1. __construct() コンストラクター: オブジェクトをインスタンス化するときに呼び出されます。__construct と、クラス名と関数名を持つコンストラクターが同時に存在する場合、__construct は...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

WeChat で削除された連絡先を回復する方法 (簡単なチュートリアルでは、削除された連絡先を回復する方法について説明します) WeChat で削除された連絡先を回復する方法 (簡単なチュートリアルでは、削除された連絡先を回復する方法について説明します) May 01, 2024 pm 12:01 PM

残念ながら、WeChat は広く使用されているソーシャル ソフトウェアであり、何らかの理由で特定の連絡先を誤って削除してしまうことがよくあります。ユーザーがこの問題を解決できるように、この記事では、削除された連絡先を簡単な方法で取得する方法を紹介します。 1. WeChat の連絡先削除メカニズムを理解します。これにより、削除された連絡先を取得できるようになります。WeChat の連絡先削除メカニズムでは、連絡先がアドレス帳から削除されますが、完全には削除されません。 2. WeChat の組み込みの「連絡先帳復元」機能を使用します。WeChat には、この機能を通じて以前に削除した連絡先をすばやく復元できる「連絡先帳復元」機能が用意されています。 3. WeChat 設定ページに入り、右下隅をクリックし、WeChat アプリケーション「Me」を開き、右上隅にある設定アイコンをクリックして設定ページに入ります。

モバイルドラゴンの卵を孵化させる秘密が明らかに(モバイルドラゴンの卵をうまく孵化させる方法を段階的に教えます) モバイルドラゴンの卵を孵化させる秘密が明らかに(モバイルドラゴンの卵をうまく孵化させる方法を段階的に教えます) May 04, 2024 pm 06:01 PM

テクノロジーの発展に伴い、モバイルゲームは人々の生活に欠かせないものになりました。かわいいドラゴンエッグの画像と面白い孵化過程で多くのプレイヤーの注目を集めており、その中でも注目を集めているゲームの一つがモバイル版ドラゴンエッグです。プレイヤーがゲーム内で自分のドラゴンをより適切に育成し成長させることができるように、この記事ではモバイル版でドラゴンの卵を孵化させる方法を紹介します。 1. 適切な種類のドラゴン エッグを選択する プレイヤーは、ゲーム内で提供されるさまざまな種類のドラゴン エッグの属性と能力に基づいて、自分に適したドラゴン エッグの種類を慎重に選択する必要があります。 2. 孵化機のレベルをアップグレードします。プレイヤーはタスクを完了し、小道具を収集することで孵化機のレベルを向上させる必要があります。孵化機のレベルは孵化速度と孵化成功率を決定します。 3. プレイヤーはゲームに参加する必要がある孵化に必要なリソースを収集します。

携帯電話の文字サイズの設定方法(携帯電話の文字サイズを簡単に調整できます) 携帯電話の文字サイズの設定方法(携帯電話の文字サイズを簡単に調整できます) May 07, 2024 pm 03:34 PM

携帯電話が人々の日常生活において重要なツールになるにつれて、フォント サイズの設定は重要なパーソナライゼーション要件になりました。さまざまなユーザーのニーズを満たすために、この記事では、簡単な操作で携帯電話の使用体験を向上させ、携帯電話のフォントサイズを調整する方法を紹介します。携帯電話のフォント サイズを調整する必要があるのはなぜですか - フォント サイズを調整すると、テキストがより鮮明で読みやすくなります - さまざまな年齢のユーザーの読書ニーズに適しています - フォント サイズを使用すると、視力の悪いユーザーにとって便利です携帯電話システムの設定機能 - システム設定インターフェイスに入る方法 - 設定インターフェイスで「表示」オプションを見つけて入力します。 - 「フォント サイズ」オプションを見つけて、サードパーティでフォント サイズを調整します。アプリケーション - フォント サイズの調整をサポートするアプリケーションをダウンロードしてインストールします - アプリケーションを開いて、関連する設定インターフェイスに入ります - 個人に応じて

golang 関数で新しい関数を動的に作成するためのヒント golang 関数で新しい関数を動的に作成するためのヒント Apr 25, 2024 pm 02:39 PM

Go 言語は、クロージャとリフレクションという 2 つの動的関数作成テクノロジを提供します。クロージャを使用すると、クロージャ スコープ内の変数にアクセスでき、リフレクションでは FuncOf 関数を使用して新しい関数を作成できます。これらのテクノロジーは、HTTP ルーターのカスタマイズ、高度にカスタマイズ可能なシステムの実装、プラグイン可能なコンポーネントの構築に役立ちます。

C++ 関数の命名におけるパラメーターの順序に関する考慮事項 C++ 関数の命名におけるパラメーターの順序に関する考慮事項 Apr 24, 2024 pm 04:21 PM

C++ 関数の名前付けでは、読みやすさを向上させ、エラーを減らし、リファクタリングを容易にするために、パラメーターの順序を考慮することが重要です。一般的なパラメータの順序規則には、アクション-オブジェクト、オブジェクト-アクション、意味論的な意味、および標準ライブラリへの準拠が含まれます。最適な順序は、関数の目的、パラメーターの種類、潜在的な混乱、および言語規約によって異なります。

Excel関数の公式の完全なコレクション Excel関数の公式の完全なコレクション May 07, 2024 pm 12:04 PM

1. SUM 関数は、列またはセルのグループ内の数値を合計するために使用されます (例: =SUM(A1:J10))。 2. AVERAGE 関数は、列またはセルのグループ内の数値の平均を計算するために使用されます (例: =AVERAGE(A1:A10))。 3. COUNT 関数。列またはセルのグループ内の数値またはテキストの数をカウントするために使用されます。例: =COUNT(A1:A10)。 4. IF 関数。指定された条件に基づいて論理的な判断を行い、結果を返すために使用されます。対応する結果。

Java で効率的で保守しやすい関数を記述するにはどうすればよいでしょうか? Java で効率的で保守しやすい関数を記述するにはどうすればよいでしょうか? Apr 24, 2024 am 11:33 AM

効率的で保守しやすい Java 関数を作成するための鍵は、シンプルに保つことです。意味のある名前を付けてください。特殊な状況に対処します。適切な可視性を使用してください。

MySQLクエリ結果の配列をオブジェクトに変換するにはどうすればよいですか? MySQLクエリ結果の配列をオブジェクトに変換するにはどうすればよいですか? Apr 29, 2024 pm 01:09 PM

MySQL クエリ結果の配列をオブジェクトに変換する方法は次のとおりです。 空のオブジェクト配列を作成します。結果の配列をループし、行ごとに新しいオブジェクトを作成します。 foreach ループを使用して、各行のキーと値のペアを新しいオブジェクトの対応するプロパティに割り当てます。新しいオブジェクトをオブジェクト配列に追加します。データベース接続を閉じます。

See all articles