ホームページ バックエンド開発 PHPチュートリアル Tencent PHP プログラマー面接の質問 - 15 の魔法のメソッドのまとめ

Tencent PHP プログラマー面接の質問 - 15 の魔法のメソッドのまとめ

Jul 25, 2016 am 08:59 AM

  1. 機能: 現在のページでクラスを使用するときに、クラスのファイルを自動的にロードします
  2. パラメータ $className はクラスの名前であり、カスタマイズできます
  3. */

  4. function __autoload($className){

  5. $className=strto lower($className);//クラス ヘッダーが大文字であるため、システムによってはファイル名の大文字と小文字が区別されるため、この手順を追加します

  6. require("$className.class.php");//クラス ファイル One.class.php をロードしますTwo.class.php とこのファイルは同じディレクトリにあります

  7. echo '-------------------------- -------< br>';//呼び出し時にマーカーとしてテストします

  8. }

  9. //次の 2 つのクラスはどちらもこのファイルで定義されています

  10. $o=new One();//1 つのクラスを使用し、初期化します

  11. $t=new Two();//2 つ使用しますクラスを初期化します 初期化&​​lt;/p>

  12. ?>

コードをコピー

この関数を正常にロードする必要がある場合、ファイル名を次のように設定する必要があることに注意してください。クラス名(小文字推奨).class .phpなどのクラス名はファイル名と何らかの関係がある必要があります。また、この関数内で例外が発生し、Catchでキャッチできない場合は、Fatal Errorが表示されます

2.__construct() コンストラクター

C# と PHP4 では、コンストラクターの関数名はクラス名と同じです。 もちろん、PHP5 もこれをサポートしています (__construct メソッドが見つからない場合は、クラス名と同じ関数名が検索されます)。このように記述する理由は、クラスの名前を変更したい場合に、コンストラクターの関数名を変更せずに、クラス名だけを変更するだけで済むという利点があります。失敗する可能性をある程度減らすことができます。サンプルコードを簡単に書いてみましょう。

  1. class PcYoYo{

  2. private $url;

  3. $this->url=$url;

  4. }

  5. }

  6. ?>

コードをコピー

3.__destruct() デストラクター

__destruct デストラクター メソッド、PHP はオブジェクトが破棄される前 (つまり、メモリからクリアされる前) にこのメソッドを呼び出します

デフォルトでは、PHP はオブジェクトのプロパティによって占有されているメモリのみを解放し、オブジェクト関連のリソースを破棄します。

デストラクターを使用すると、オブジェクトの使用後に任意のコードを実行してメモリをクリアできます。

スクリプトがオブジェクトに関連付けられなくなったと PHP が判断すると、デストラクターが呼び出されます。

関数の名前空間内では、関数が返されたときにこれが発生します。

グローバル変数の場合、これはスクリプトの最後で行われます。オブジェクトを明示的に破棄する場合は、通常、その変数を NULL に割り当てるか、unset を呼び出します。

4.__call() は、呼び出されたメンバー メソッドがクラス内に存在しない (またはアクセス許可がない) 場合に呼び出され、何らかの操作を実行するか、エラー後に情報を求めるために使用されます

  1. //クラスを初期化

  2. class person{

  3. < p>private $name;

  4. private $age;

  5. private $sex;

  6. function walk($hour , $分){

  7. echo "$時間:$分歩きます
    ";

  8. }

  9. }

  10. //マジックメソッド __call を使用

  11. /*****

  12. 関数: オブジェクトが一部の操作を実行するためにクラスに存在しない関数を呼び出すときに自動的に呼び出します

  13. パラメータ: $proName の名前function$ args パラメータ配列 $proName と呼ばれる $args は、独自のスタイルに合わせて変更できるカスタム仮パラメータですが、これら 2 つのパラメータの意味は固定されています

  14. ***** /< ;/p>

  15. function __call($proName,$args){

  16. echo "$proName は存在しません! パラメータは次のとおりです";

  17. print_r($args);

  18. echo '
    ';

  19. }

  20. //オブジェクトをインスタンス化します

  21. $p=new Person();

  22. $p->walk(5,39);

  23. // Person クラスに存在しないメソッドを呼び出すPerson class Method

  24. $p->work();//マジックメソッド __call が使用されていない場合、プログラムでエラーが発生し、エラー メッセージは「致命的エラー: 未定義メソッドの呼び出し」です。 D:/phpnow/htdocs/holiday/magic__call.php の 29 行目の Person::work( )

  25. //マジック メソッド __call が使用されている場合、オブジェクトが呼び出していない関数を呼び出した場合クラスに __call が存在すると、特定の操作を実行するために __call が自動的に呼び出されます。

  26. ?>

コードをコピー

5.__クローン()

この関数は、オブジェクトが複製されるときに自動的に呼び出され、その機能は複製されたコピーに対していくつかの初期化操作を実行することです。

  1. //クラスを初期化

  2. class Computer{

  3. < p>//

  4. public $cpu='intel';

  5. private $monitor;

  6. private $keyboard ;

  7. //マジック メソッド __clone() 関数を設定します

  8. function __clone(){//このマジック メソッドを設定しない場合、クローンは正確に同じはい、__clone 関数はクラスのコンストラクターに似ており、いくつかの初期化操作を実行します

  9. $this->cpu='AMD';//$this は新しく作成されたクローンを指しますobject

  10. }

  11. // = と clone の違いを比較するデストラクターを設定します

  12. function __destruct(){ < /p>

  13. エコー '*************************************** **
    ';

  14. }

  15. }//クラスの終わり

  16. //インスタンスを作成しますobject

  17. $c1=new Computer();

  18. //オブジェクトへの参照はスタック メモリに保存されているため、reference メソッドを使用して参照を追加しますメモリ内 ポインタ用語では、$c1

  19. //デストラクタを使用してこれが真であるかどうかを判断できます。オブジェクトをコピーしました< /p>

  20. $c2=$c1;

  21. // clone メソッドを使用してオブジェクトのクローンを作成します

  22. $c3= clone $c1;

  23. //両者の情報比較を出力

  24. echo $c1->cpu,'
    ';

  25. < ;p>echo $c3->cpu,'
    ';

  26. ?>

コードをコピー
6 .__get()オブジェクトによって呼び出されるメンバー属性が宣言されていない場合、またはレベルがプライベートまたは保護されている場合など、この関数で独自の操作の一部を実行できます

  1. class person{

  2. private $name;

  3. < p>public $nation;

  4. function __get($para){//パラメータが必要です

  5. echo $para.'存在しません';< ; /p>

  6. }

  7. }

  8. $p=新しい人();

  9. $ name =$p->name;//__get 関数を呼び出します

  10. $nation=$p->nation;//__get 関数は決して呼び出さない

  11. ? >

コードをコピー
7.__set() この関数は、未宣言またはレベルがプライベートまたは保護されている場合などに呼び出され、この中で独自の操作の一部を実行できます。関数

  1. class Pc{

  2. private $key;

  3. < p>function __set($key,$value){// 2 つのパラメータが必要です。1 つはメンバー属性、もう 1 つは値です

  4. echo '.$key に値を割り当てます。 ' .$value.'失敗';

  5. }

  6. }

  7. $p=new Pc();

  8. gt;$p->key=123;

  9. ?>

コードをコピー

1 2 次へ最後のページ


このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

セッションのハイジャックはどのように機能し、どのようにPHPでそれを軽減できますか? セッションのハイジャックはどのように機能し、どのようにPHPでそれを軽減できますか? Apr 06, 2025 am 12:02 AM

セッションハイジャックは、次の手順で達成できます。1。セッションIDを取得します。2。セッションIDを使用します。3。セッションをアクティブに保ちます。 PHPでのセッションハイジャックを防ぐための方法には次のものが含まれます。1。セッション_regenerate_id()関数を使用して、セッションIDを再生します。2。データベースを介してストアセッションデータを3。

確固たる原則と、それらがPHP開発にどのように適用されるかを説明してください。 確固たる原則と、それらがPHP開発にどのように適用されるかを説明してください。 Apr 03, 2025 am 12:04 AM

PHP開発における固体原理の適用には、次のものが含まれます。1。単一責任原則(SRP):各クラスは1つの機能のみを担当します。 2。オープンおよびクローズ原理(OCP):変更は、変更ではなく拡張によって達成されます。 3。Lischの代替原則(LSP):サブクラスは、プログラムの精度に影響を与えることなく、基本クラスを置き換えることができます。 4。インターフェイス分離原理(ISP):依存関係や未使用の方法を避けるために、細粒インターフェイスを使用します。 5。依存関係の反転原理(DIP):高レベルのモジュールと低レベルのモジュールは抽象化に依存し、依存関係噴射を通じて実装されます。

phpstormでCLIモードをデバッグする方法は? phpstormでCLIモードをデバッグする方法は? Apr 01, 2025 pm 02:57 PM

phpstormでCLIモードをデバッグする方法は? PHPStormで開発するときは、PHPをコマンドラインインターフェイス(CLI)モードでデバッグする必要がある場合があります。

システムの再起動後にUnixSocketの権限を自動的に設定する方法は? システムの再起動後にUnixSocketの権限を自動的に設定する方法は? Mar 31, 2025 pm 11:54 PM

システムが再起動した後、UnixSocketの権限を自動的に設定する方法。システムが再起動するたびに、UnixSocketの許可を変更するために次のコマンドを実行する必要があります:sudo ...

PHPでの後期静的結合を説明します(静的::)。 PHPでの後期静的結合を説明します(静的::)。 Apr 03, 2025 am 12:04 AM

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHPのCurlライブラリを使用してJSONデータを含むPOSTリクエストを送信する方法は? PHPのCurlライブラリを使用してJSONデータを含むPOSTリクエストを送信する方法は? Apr 01, 2025 pm 03:12 PM

PHP開発でPHPのCurlライブラリを使用してJSONデータを送信すると、外部APIと対話する必要があることがよくあります。一般的な方法の1つは、Curlライブラリを使用して投稿を送信することです。

See all articles