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

この号のモットー:

私たちの才能が十分に強くない場合、シングルスレッドの技術マスターになるためにエネルギーの 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 までご連絡ください。
誇大広告を超えて:今日のPHPの役割の評価誇大広告を超えて:今日のPHPの役割の評価Apr 12, 2025 am 12:17 AM

PHPは、特にWeb開発の分野で、最新のプログラミングで強力で広く使用されているツールのままです。 1)PHPは使いやすく、データベースとシームレスに統合されており、多くの開発者にとって最初の選択肢です。 2)動的コンテンツ生成とオブジェクト指向プログラミングをサポートし、Webサイトを迅速に作成および保守するのに適しています。 3)PHPのパフォーマンスは、データベースクエリをキャッシュおよび最適化することで改善でき、その広範なコミュニティと豊富なエコシステムにより、今日のテクノロジースタックでは依然として重要になります。

PHPの弱い参照は何ですか、そしていつ有用ですか?PHPの弱い参照は何ですか、そしていつ有用ですか?Apr 12, 2025 am 12:13 AM

PHPでは、弱い参照クラスを通じて弱い参照が実装され、ガベージコレクターがオブジェクトの回収を妨げません。弱い参照は、キャッシュシステムやイベントリスナーなどのシナリオに適しています。オブジェクトの生存を保証することはできず、ごみ収集が遅れる可能性があることに注意する必要があります。

PHPで__invoke Magicメソッドを説明してください。PHPで__invoke Magicメソッドを説明してください。Apr 12, 2025 am 12:07 AM

\ _ \ _ Invokeメソッドを使用すると、オブジェクトを関数のように呼び出すことができます。 1。オブジェクトを呼び出すことができるように\ _ \ _呼び出しメソッドを定義します。 2。$ obj(...)構文を使用すると、PHPは\ _ \ _ Invokeメソッドを実行します。 3。ロギングや計算機、コードの柔軟性の向上、読みやすさなどのシナリオに適しています。

同時性については、PHP 8.1の繊維を説明します。同時性については、PHP 8.1の繊維を説明します。Apr 12, 2025 am 12:05 AM

繊維はPhp8.1で導入され、同時処理機能が改善されました。 1)繊維は、コルーチンと同様の軽量の並行性モデルです。 2)開発者がタスクの実行フローを手動で制御できるようにし、I/O集約型タスクの処理に適しています。 3)繊維を使用すると、より効率的で応答性の高いコードを書き込むことができます。

PHPコミュニティ:リソース、サポート、開発PHPコミュニティ:リソース、サポート、開発Apr 12, 2025 am 12:04 AM

PHPコミュニティは、開発者の成長を支援するための豊富なリソースとサポートを提供します。 1)リソースには、公式のドキュメント、チュートリアル、ブログ、LaravelやSymfonyなどのオープンソースプロジェクトが含まれます。 2)StackOverFlow、Reddit、およびSlackチャネルを通じてサポートを取得できます。 3)開発動向は、RFCに従うことで学ぶことができます。 4)コミュニティへの統合は、積極的な参加、コード共有への貢献、および学習共有への貢献を通じて達成できます。

PHP対Python:違いを理解しますPHP対Python:違いを理解しますApr 11, 2025 am 12:15 AM

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHPは、シンプルな構文と高い実行効率を備えたWeb開発に適しています。 2。Pythonは、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。

PHP:それは死にかけていますか、それとも単に適応していますか?PHP:それは死にかけていますか、それとも単に適応していますか?Apr 11, 2025 am 12:13 AM

PHPは死にかけていませんが、常に適応して進化しています。 1)PHPは、1994年以来、新しいテクノロジーの傾向に適応するために複数のバージョンの反復を受けています。 2)現在、電子商取引、コンテンツ管理システム、その他の分野で広く使用されています。 3)PHP8は、パフォーマンスと近代化を改善するために、JITコンパイラおよびその他の機能を導入します。 4)Opcacheを使用してPSR-12標準に従って、パフォーマンスとコードの品質を最適化します。

PHPの未来:適応と革新PHPの未来:適応と革新Apr 11, 2025 am 12:01 AM

PHPの将来は、新しいテクノロジーの傾向に適応し、革新的な機能を導入することで達成されます。1)クラウドコンピューティング、コンテナ化、マイクロサービスアーキテクチャに適応し、DockerとKubernetesをサポートします。 2)パフォーマンスとデータ処理の効率を改善するために、JITコンパイラと列挙タイプを導入します。 3)パフォーマンスを継続的に最適化し、ベストプラクティスを促進します。

See all articles

ホット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ヘンタイを無料で生成します。

ホットツール

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SublimeText3 中国語版

SublimeText3 中国語版

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