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

WBOY
リリース: 2016-07-25 08:59:19
オリジナル
963 人が閲覧しました
  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 次へ最後のページ


ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート