第 1 章: シャオ ミンと携帯電話
むかしむかし、シャオ ミンという名前の男がいました。 シャオミンには喫煙と飲酒という 3 つの大きな趣味があります... ああ、ごめんなさい、間違ったセットに行ってしまいました。それは、Zhihu を閲覧すること、King Pesticide をプレイすること、WeChat の赤い封筒を手に入れることであるはずです。class Ming extends Person { private $_name; private $_age; function read() { //逛知乎 } function play() { //玩农药 } function grab() { //抢红包 } }しかし、人間であるシャオミンは、上記の機能を自分で実現することはできません。携帯電話に頼らざるを得ません。それで、iPhone6を購入しました。次に、iPhone6を1台作りましょう。
class iPhone6 extends Iphone { function read($user="某人") { echo $user."打开了知乎然后编了一个故事 \n"; } function play($user="某人") { echo $user."打开了王者农药并送起了人头 \n"; } function grab($user="某人") { echo $user."开始抢红包却只抢不发 \n"; } }シャオミンは新しい携帯電話をとても大切にしていて、毎日しっかりと手に持って管理しているので、シャオミンはこんな感じになります
class Ming extends Person { private $_name; private $_age; public function __construct() { $this->_name = '小明'; $this->_age = 26; } function read() { //…… 省略若干代码 (new iPhone6())->read($this->_name); //逛知乎 } function play() { //…… 省略若干代码 (new iPhone6())->play($this->_name);//玩农药 } function grab() { //…… 省略若干代码 (new iPhone6())->grab($this->_name);//抢红包 } }今日は土曜日なので、シャオミンは行かなくても大丈夫です仕事に行くため、彼は立ち上がって、Zhihuを閲覧し、King Pesticideをプレイし、赤い封筒を手に取りました。
$ming = new Ming(); //小明起床 $ming->read(); $ming->play(); $ming->grab();現時点では、コマンド ラインで次のような出力が表示されます。Xiao Ming は Zhihu を開いてストーリーを作成しました Xiao Ming は King Pesticide を開いて、送信しました 殺されました シャオミンは赤い封筒を掴み始めましたが、掴むことしかできませんでしたが、渡すことはできませんでした この日、シャオミンは充実した人生を送っていました。世界で一番幸せな人。
第 2 章: シャオ ミンの喜びと悲しみ
シャオ ミンと彼の携帯電話はかつて一緒に素晴らしい時間を過ごしました。自由時間があるとき、シャオ ミンは携帯電話を使ってハグしました。電話をしたり、Zhihuを閲覧したり、Weiboを閲覧したり、ゲームをしたりする彼は、彼女はまったく必要なく、携帯電話がそばにあれば満足できると感じていました。 しかし、システムのアップデートが何度も繰り返されることで彼の夢は完全に打ち砕かれ、携帯電話の動作はますます遅くなり、バッテリーの寿命はますます短くなり、ある日、冷たい風の中、彼の携帯電話が壊れてしまうと誰が想像したでしょうか。ついに寒さに耐えられなくなり、振り返らずに電源を切りました。 シャオミンはとても悲しく、携帯電話を変えなければならないことに気づきました。 より良いユーザー エクスペリエンスを得るために、Xiao Ming は歯を食いしばって iPhone を購入しました彼が遭遇した問題の 1 つは、オリジナルの iPhone 6 に依存しすぎており、両者が深く結びついていたことでした。携帯電話を変更するには、ナイフを使って変身し、体内のすべての方法を取り除く必要があります。すべての iPhone6 は iPhoneX に置き換えられました。 長い変換プロセス長い変換プロセスを経て、Xiao Ming は最終的にコード内のすべての iPhone6 を iPhoneX に置き換えました。とても大変ですが、シャオミンは幸せだと感じています。 そこでシャオミンさんは喜んで携帯電話を職場に持って行きましたが、帰り道に泥棒に盗まれてしまいました。緊急事態に備えて、シャオミンさんは廃棄されたばかりの iPhone 6 を再利用するしかありませんでしたが、長い変革のプロセスを考えると、言葉では言い表せないほど悔しくなり、携帯電話に依存しすぎていると感じました。携帯電話に何か問題が起こるたびに、彼は感じていたのですか? 彼は自分自身を変えなければなりません。これは単なる過剰結合ではなく、単に本末転倒です。彼は空に向かって叫びました、私はそれをしたくないですもう携帯電話を制御できません。 空の創造主、つまりプログラマーである私が彼の叫び声を聞きました。私は彼に言いました、もう携帯電話を制御する必要はありません、管理は私に任せてください、私に制御を与えてください. .これを制御の反転といいます。第 3 章: 創造者の知恵
シャオ ミンは私の言葉を聞きました。彼は嬉しかったですが、少し怖がっていました。彼はひざまずき、何度かひれ伏しました。 「あなたが伝説の創造主、バグメック神であることが判明しました。携帯電話の制御を私の手からあなたに渡すという、制御反転の 4 つの言葉を言ったと聞きましたが、これは「それはあなたの考えにすぎません。単なる考えです。制御の逆転を達成し、携帯電話を使い続けることができるようにするには、どのような方法を使用できますか?」 その後、私は 4 つの大きな言葉を投げかけました。「依存関係の注入!」 次に、偉大な私がシャオ ミンに次のような非人道的な変更を加え始めました。class Ming extends Person { private $_name; private $_age; private $_phone; //将手机作为自己的成员变量 public function __construct($phone) { $this->_name = '小明'; $this->_age = 26; $this->_phone = $phone; echo "小明起床了 \n"; } function read() { //…… 省略若干代码 $this->_phone->read($this->_name); //逛知乎 } function play() { //…… 省略若干代码 $this->_phone->play($this->_name);//玩农药 } function grab() { //…… 省略若干代码 $this->_phone->grab($this->_name);//抢红包 } }次は、ある日シャオ ミンを実行するシミュレーションをしてみましょう。
$phone = new IphoneX(); //创建一个iphoneX的实例 if($phone->isBroken()){//如果iphone不可用,则使用旧版手机 $phone = new Iphone6(); } $ming = new Ming($phone);//小明不用关心是什么手机,他只要玩就行了。 $ming->read(); $ming->play(); $ming->grab();まず、iPhone が携帯電話かどうかを確認してみましょう体内に直接注射されるため、どの携帯電話を持っているかを気にする必要はなく、ただ直接使用するだけで済みます。 これは依存性注入です。
第 4 章: シャオ ミンの洞察
シャオ ミンの生活はよりシンプルになり始め、節約できたすべての時間をメモを書くことに費やしました。これをノートに書きましょう
私は以前、支配欲が強く携帯電話に頼りすぎていたため、携帯電話と自分との連動性が高く、携帯電話に少しでも問題がある限り、これは本当に時間の無駄です。間違いを犯しやすいのです。私が創造主に制御を委ねて以来、創造主は毎日私を起こす前にすでに携帯電話を選んでいますので、私はそれがどんな携帯電話であるかは気にせず、いつものようにそれで遊ぶだけで済みます。携帯電話に問題があっても、創造主が直接解決してくれるので、自分で改造する必要はありません。私は今、携帯電話を7台購入し、創造主に渡しています。毎日1台ずつ変えています。とても幸せです!
私はまた、次の洞察を得ました。クラス A の関数実装がクラス B の助けを必要とする場合、クラス B はクラス A の依存関係であると言われます。クラスがクラス A 内でインスタンス化される場合、Bの場合、2 つの間に高度な結合が存在します。クラス B に問題が発生すると、クラス A も変換する必要があります。そのような状況が多く、各クラス間に多くの依存関係がある場合は、次のような問題が発生します。一度の攻撃で全身が影響を受けると、プログラムの維持が非常に困難になり、問題が発生しやすくなります。この問題を解決するには、クラスBからクラスAの制御を取り出して第三者に引き渡す必要があり、第三者に制御を逆転させることを制御の反転(IOC Inversion Of Control)といいます。制御の反転は問題を解決できるアイデアと考えられる結果であり、依存関係の注入 (Dependency Injection) はその最も代表的な実装方法です。サードパーティ (これを IOC コンテナと呼びます) が依存関係を制御し、コンストラクター、属性、またはファクトリー パターンなどのメソッドを通じて依存関係をクラス A に注入することで、クラス A とクラス B を大幅に分離します。
推奨チュートリアル: 「PHP チュートリアル 」
以上が依存関係注入がどのように分離を実現するかを深く理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

PHPは、現代のWeb開発、特にコンテンツ管理とeコマースプラットフォームで依然として重要です。 1)PHPには、LaravelやSymfonyなどの豊富なエコシステムと強力なフレームワークサポートがあります。 2)パフォーマンスの最適化は、Opcacheとnginxを通じて達成できます。 3)PHP8.0は、パフォーマンスを改善するためにJITコンパイラを導入します。 4)クラウドネイティブアプリケーションは、DockerおよびKubernetesを介して展開され、柔軟性とスケーラビリティを向上させます。

PHPは、特に迅速な開発や動的なコンテンツの処理に適していますが、データサイエンスとエンタープライズレベルのアプリケーションには良くありません。 Pythonと比較して、PHPはWeb開発においてより多くの利点がありますが、データサイエンスの分野ではPythonほど良くありません。 Javaと比較して、PHPはエンタープライズレベルのアプリケーションでより悪化しますが、Web開発により柔軟性があります。 JavaScriptと比較して、PHPはバックエンド開発により簡潔ですが、フロントエンド開発のJavaScriptほど良くありません。

PHPとPythonにはそれぞれ独自の利点があり、さまざまなシナリオに適しています。 1.PHPはWeb開発に適しており、組み込みのWebサーバーとRich Functionライブラリを提供します。 2。Pythonは、簡潔な構文と強力な標準ライブラリを備えたデータサイエンスと機械学習に適しています。選択するときは、プロジェクトの要件に基づいて決定する必要があります。

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

PHPが多くのWebサイトよりも優先テクノロジースタックである理由には、その使いやすさ、強力なコミュニティサポート、広範な使用が含まれます。 1)初心者に適した学習と使用が簡単です。 2)巨大な開発者コミュニティと豊富なリソースを持っています。 3)WordPress、Drupal、その他のプラットフォームで広く使用されています。 4)Webサーバーとしっかりと統合して、開発の展開を簡素化します。

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

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

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


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

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

WebStorm Mac版
便利なJavaScript開発ツール

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター
