ホームページ  >  記事  >  バックエンド開発  >  [PHP 学習 100 日おめでとう] 4 日目: PHP マジック関数を完了する_PHP チュートリアル

[PHP 学習 100 日おめでとう] 4 日目: PHP マジック関数を完了する_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-14 10:09:56826ブラウズ

この号のモットー:

私たちの才能が十分に強くない場合、シングルスレッドの技術マスターになるためにエネルギーの 500% を費やすのではなく、より少ないエネルギーを費やして賢いマルチスレッド プログラマーになる方が良いでしょう。
この問題のたわごと:
湖南衛星テレビ「私は歌手です」の最初のシーズンが終了し、歌手の王が誕生しました。おそらく、多くの人がキング・オブ・シンガーについてさまざまな考えを持っているかもしれませんが、Yu Quanが確かにキング・オブ・シンガーとして「公式に」発表され、「誰もが認めている」ことは否定できません。私の個人的な分析は次のとおりです。
実際、すべての歌手は非常に強く、独自の特徴を持っています。歌手の王などというものは実際には存在しません。例えば、神から与えられた林志軒、ソプラノの黄馬、全身を揺さぶる周暁王、非常に繊細な楊宗偉など、それぞれの特徴を持った歌手がいます。しかし、個人的に最も賢い歌手はユー・クアンだけだと思います。音色の点では林志軒ほどではないかもしれませんし、タッチの点ではヤン・ゾンウェイほどではないかもしれません。高音の点では彼はそうかもしれません。母親ほどの高みにはなれないし、ロック音楽の観点から言えば頭を剃らなければならない。そのため、ユー・クアンの戦略は観客に自分自身を溶け込ませることであり、観客を自分たちの歌に強制するものではない。ついに彼は、勝負に勝つための最強の武器を思いついた。
ここで、私が処理した神レベルの分析も書きます。 Yu Quan に投票する場合、「Yu」に 1 票、「Quan」に 1 票、Deng Chao に 1 票、Sun Li に 1 票、そして、Bai Baihe への支持に 1 票、3G Tianyi への 1 票、そして自宅で Liby 洗濯洗剤を使用している人への 1 票です。したがって、玉泉氏が投票で1位にならなかったのは許せない。さらに、Liby と Tianyi はこのプログラムのスポンサーでもあります。
プログラマも同様で、いきなりデビューしたらJavaの達人や先輩が多すぎて、裸になっても追いつくのは大変だった、結局、彼らの開発経験はどこにあるのか? C#、このバージョンと機能のアップグレードは速すぎるし、ただ丸裸で学習してもすべてをマスターして偉人になるのは難しいです。もう一度 Python や Ruby を見てください。よく学んだ人は間違いなく偉いです。少数派で、よく学ばない人は基本的にクソなので、淘宝が好きな人に一票、mysqlに一票、Apacheに一票、好きな人に一票があるので、phpを勉強したほうがいいでしょう。 wordpress、dz forum が好きな人に 1 票、centos が好きな人に 1 票、これ以上は言いませんが、Yu Quan は歌の王です。プログラマーの王になる方法を考えてみませんか。
テキスト: 魔法の関数
なぜマジック関数と呼ばれるのですか? 場所によってはマジック関数と呼ばれることもあります。理由は簡単です。これほど便利かつ簡単に、最初から最後まで隅から隅まで学習できる言語は他にありません。読み終えた後は、PHP を完全に克服したように感じるでしょう。 Javaではこの感覚を見つけるのが難しいですが、C#ではどうですか?ああ、それについて話す必要はありません。
(1)、__construct コンストラクター
コンストラクター関数は、それが最初に展開される関数であることを意味します。展開するかどうかに関係なく、自動的に展開されます。
[php]
クラステスト
関数__construct()
自エコー「初めて爆発しました」
}
関数 mydo()
ハンドエコー「手動で爆発させる」
}
}
$newObj = 新しいテスト();
$newObj->mydo();
操作の結果、最初は爆発し(望むか望まないかは別として)、その後2度目も爆発します。
ここでの知識ポイントは次のとおりです: パラメーターを渡すのも非常に簡単で、__construct($arg1,$arg2);
することができます。
同様に、func_get_args 関数を使用して、未知の数のパラメーターを取得することもできます。たとえば
[php]
クラステスト
関数__construct()
$getargs=func_get_args();
exit("パラメータが 2 つある必要があります");
}
関数 mydo()
through through off echo 「手動で一度爆発しました」
;
}
}
$newObj = new test("aaa"); //コンストラクター内の $getargs[0] の値は aaa です
$newObj->mydo();
exit を使用すると、mydo メソッドは実行されないことに注意してください。つまり、手動で爆発させることは不可能になります。 C#のresponse.endに似ています。
このコンストラクターは主にクラスの継承で使用され、ページ出力コンテンツで直接使用してパラメーターの数に基づいてさまざまなコンテンツをロードすることもできます。
(2)、__destruct() デストラクター
デストラクターの原理を説明すると、オブジェクトが削除されるか、オブジェクトの操作が終了すると、このメソッドが自動的に呼び出され、リソースの解放などの操作を実行できます。
実際、php を使用する場合は、この関数にまったく注意を払う必要はありません。 Zend はすべてのリソースの解放を担当しており、PHP はクラス内で大規模なデータのスーパー ループを実行するのには適していません。そうしないと、本当に爆発してしまいます。一般に、実際のプロジェクトでは、ログの記録などの小さなことは継承によって行われます。クラス内で処理するデータが数百万ある場合、それは大きなプロジェクトを受け取り、それを公開しようとしているか、夢を見ているかのどちらかです。
(3)、__autoload 自動読み込み
この機能は 1 か所でのみ役立ちます。関数ファイルを自動でロードする機能です。
[php]
クラスフルーツ
関数 __construct($user の選択)
$ apple object = new apple (); // ここで、啃 Apple .php に必要な関数が自動的にロードされます
その他
= $ Durian = new durian () // ここでは余分な PHP ファイルはロードされません
;
}
}
クラスドリアン
{
//臭すぎるけど、食べるのは好きです
}
クラスアップル
{
関数 __autoload()
(Require (「リンゴの機能には .php が必要です」);
}
}
$newObj = 新しい果物(1)
;
上記の例は、理解しやすいように中国語で書かれているので、直接コピーして実行しないでください。
(4)、__電話
存在しないクラスの関数を呼び出す場合は、メソッドを使用する必要があります。__call が失敗した場合は、親クラスのメソッドが呼び出されます。
個人的に、この関数は PHP で最も強力な関数だと思います。これから、たとえば次のような非常に明るいコードを書くことができます:
[php]
クラスデータ
{
関数 __call($name,$arguments)
{
//$name はメソッド名を表します $arguments はパラメータを表します
if($name=="getSqlServer")
// sqlserver に関連する SQL ステートメントを実行します
} }
その他
//mysql に関連する SQL ステートメントを実行します
}
}
}
$newObj = 新しいデータ();
$newObj->getSqlServer("select top 10 * from table1"); //getSqlserver このメソッドは事前定義する必要はありません
$newObj->getMysql("select * from table1 limit 0,10");//mysql には上位 n 構文がないことに注意してください
もちろん、上記は 1 つの例から推論できます。特に、仮想エンティティまたは仮想クラスを構築する場合に、高度に構成可能なコード記述を実現できます。
(五)、__get、__set
プロパティが未定義の場合、取得または設定時に自動的に呼び出されます
[php]
クラスデータ
{
function __get($name) //$name は属性名を表します
{
If($name=="H7N9") //変数が H7N9 で定義されていない場合は __get が呼び出されます 定義されている場合は入りません
️ -- 「鳥インフルエンザ」を返します。
その他
アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト
}
}
$newObj = 新しいデータ();
エコー $newObj->H7N9;
エコー $newObj->H100N30;
この方法を使用しても、明るいコードを書くことができます
(6),__clone()
オブジェクトのクローン作成時に実行される関数
[php]
クラスデータ
{
var $myname="シェニーシン";
関数__clone()
{
$this->myname="偽シェニーシン";
}
}
$newObj = 新しいデータ();
エコー $newObj->私の名前
$obj2=$newObj をクローンします。
エコー $obj2->私の名前
この関数は実際のプロジェクトにもあります。たとえば、ニュース Web サイトを構築している場合、ユーザーは同じニュースをコピーして収集することができます。 ) 特定の識別値を変更する関数。
など
[php]
クラスニュース
{
var $newsid=1
関数__clone()
{
//データベース内の ID 1 のニュースを実行し、引用符で囲むか、コレクション フィールドに +1 を追加します
}
}
$newObj = 新しいニュース
;
$news2=clone $newObj;//ついに外部サイトユーザーが当サイトのニュースを収集しに来てくれました、とても嬉しいです
(7),__toString()
使用方法は例を見れば簡単です
[php]
クラスニュース
{
var $newstitle="ケリー米国務長官、中国訪問のため北京に到着";
Function __toString() //この関数を追加しないとオブジェクトを文字列として出力できません
{
「これはニュース オブジェクトです。タイトルしか提供できません」を返します。
}
}
$newObj = 新しいニュース
;
echo $newObj //うーん。 。間違えて、このアイテムが文字列ではないことを忘れていましたが、それでも爆発する可能性があります
(8)、__寝て、__起きて
この関数は、クラスがシリアル化または逆シリアル化されるときにのみ自動的に呼び出されます。見てください
[php]
クラスニュース
{
var $user1="卞工";
var $user2="ブタのガンリー";
var $user3="先輩";
関数__sleep()
{
エコー「先輩は機密情報なので連載は許可しません」
}
}
$newObj = 新しいニュース
;
$obj=シリアル化($newObj);
var_dump($obj);
上記は php の魔法の機能です。実際、これは php の最も優れた部分の 1 つです。
後の実際のプロジェクトで非常に男らしくセクシーなプログラムを作成するには、まずこれらの魔法の関数を理解する必要があります。

http://www.bkjia.com/PHPjc/477562.html

tru​​ehttp://www.bkjia.com/PHPjc/477562.html技術記事この号のモットー: 才能が十分でない場合は、シングルスレッドの技術マスターになるためにエネルギーの 500% を費やすよりも、賢いマルチスレッド プログラマーになるためにエネルギーをあまり費やさないほうが良いです。 この問題のナンセンス:...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。