この記事では、事例を通して PHP の MVC 実装原理を簡単に紹介するだけです。実際、ほとんどのフレームワークの MVC もこの原理に基づいて実装されています。これ以上は説明せずに、直接コードに進みましょう。
1. ファイル構造
3 つのフォルダーを作成しますcontroller フォルダーにはコントローラー ファイルが格納されます
view フォルダーにはビュー ファイルが格納されます
model フォルダーにはデータ ファイルが格納されます
入り口のみ
2. コントローラー
コントローラーフォルダーに、democontroller.php ファイルを作成します。ファイルの内容は次のとおりです
<p><?php </p>class DemoController <br />{ <br />function index() <br />{ <br />echo('hello world'); <br />} <br />} <br /><p>/* End of file democontroller.php */ </p>
このファイルでは、DemoController という名前のオブジェクトを作成しました。これには、hello world を出力するインデックス メソッドが含まれています。
以下は、index.php の DemoController で Index メソッドを実行します。
index.php のコードは次のとおりです。
<p><?php </p>require('controller/democontroller.php'); <br />$controller=new DemoController(); <br />$controller->index(); <br /><p>/* End of file index.php */ </p>
index.php を実行します。予想通り、長らく失われたものが表示されました。こんにちは世界。これら 2 つのファイルは非常にシンプルですが、唯一の入り口から実行したいコントローラーを実行するという MVC の本質も少し明らかにしています。もちろんコントローラー部分はuriで決まるはずなので、どのコントローラーを実行するかをuriで判断できるようにindex.phpを書き換えましょう。
index.php のコードを次のように書き換えます。
<p><?php </p>$c_str=$_GET['c']; <br />//获取要运行的controller <br />$c_name=$c_str.'Controller'; <br />//按照约定url中获取的controller名字不包含Controller,此处补齐。 <br />$c_path='controller/'.$c_name.'.php'; <br />//按照约定controller文件要建立在controller文件夹下,类名要与文件名相同,且文件名要全部小写。 <br />$method=$_GET['a']; <br />//获取要运行的action <br />require($c_path); <br />//加载controller文件 <br />$controller=new $c_name; <br />//实例化controller文件 <br />$controller->$method(); <br />//运行该实例下的action <br /><p>/* End of file index.php */ </p>
「http://localhost/index.php?c」と入力します。ブラウザ =demo&a=index、Hello World が表示されました。もちろん、別のコントローラーがあり、それを実行したい場合は、url パラメーターの c と a の値を変更するだけで済みます。
ここで説明すべき問題がいくつかあります。1. PHP は動的言語であり、必要なオブジェクトを直接取得し、文字列 new、つまり上記の新しい $c_name を通じて必要なメソッドを実行できます。これは new 'DemoController として理解できます。 '、$c_name 自体の値は 'DemoController' であるため、新しい 'DemoController' を直接記述することはできません。'DemoController' 文字列は変数を介して転送する必要があります。方法は同じです。
2. URL の c の値は、demo です。つまり、$c_name の値は、demoController である必要があります。これはまだ機能しますか? 「php では大文字と小文字が区別されます」という文は不完全です。php では、変数 ($ が前に付く) と定数 (define で定義される) のみが大文字と小文字を区別し、クラス名、メソッド名、さらには一部のキーワードは大文字と小文字を区別しません。書かれた。また、true、false、null などは、すべて大文字またはすべて小文字のみにすることができます。もちろん、実際のエンコード処理では大文字と小文字を区別する必要があります。
3. ビュー
まず、view フォルダーの下にindex.php を作成し、何でも書きます (笑、まだ hello world と書きました)。次に、以前の DemoController を書き直します。
コードは次のとおりです。
<p><?php </p>class DemoController <br />{ <br />function index() <br />{ <br />require('view/index.php'); <br />} <br />} <br /><p>/* End of file democontroller.php */</p>
ブラウザで再度実行して、必要なコンテンツが出力されたかどうかを確認します。 。
次に、コントローラーを介してビューにデータを渡します。コードは次のとおりです。
<p><?php </p>class DemoController <br />{ <br />function index() <br />{ <br />$data['title']='First Title'; <br />$data['list']=array('A','B','C','D'); <br />require('view/index.php'); <br />} <br />} <br /><p>/* End of file democontroller.php */</p>
Index.php ファイル。ビューフォルダー内のコードは次のとおりです:
<p><html> </p><head> <br /><title>demo</title> <br /></head> <br /><body> <br /><h1><?php echo $data['title'];?></h1> <br /><?php <br />foreach ($data['list'] as $item) <br />{ <br />echo $item.'<br>'; <br />} <br />?> <br /></body> <br /></html>

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

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

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

PHPでは、特性は方法が必要な状況に適していますが、継承には適していません。 1)特性により、クラスの多重化方法が複数の継承の複雑さを回避できます。 2)特性を使用する場合、メソッドの競合に注意を払う必要があります。メソッドの競合は、代替およびキーワードとして解決できます。 3)パフォーマンスを最適化し、コードメンテナビリティを改善するために、特性の過剰使用を避け、その単一の責任を維持する必要があります。

依存関係噴射コンテナ(DIC)は、PHPプロジェクトで使用するオブジェクト依存関係を管理および提供するツールです。 DICの主な利点には、次のものが含まれます。1。デカップリング、コンポーネントの独立したもの、およびコードの保守とテストが簡単です。 2。柔軟性、依存関係を交換または変更しやすい。 3.テスト可能性、単体テストのために模擬オブジェクトを注入するのに便利です。

SplfixedArrayは、PHPの固定サイズの配列であり、高性能と低いメモリの使用が必要なシナリオに適しています。 1)動的調整によって引き起こされるオーバーヘッドを回避するために、作成時にサイズを指定する必要があります。 2)C言語アレイに基づいて、メモリと高速アクセス速度を直接動作させます。 3)大規模なデータ処理とメモリに敏感な環境に適していますが、サイズが固定されているため、注意して使用する必要があります。

PHPは、$ \ _ファイル変数を介してファイルのアップロードを処理します。セキュリティを確保するための方法には次のものが含まれます。1。アップロードエラー、2。ファイルの種類とサイズを確認する、3。ファイル上書きを防ぐ、4。ファイルを永続的なストレージの場所に移動します。

JavaScriptでは、nullcoalescingoperator(??)およびnullcoalescingsignmentoperator(?? =)を使用できます。 1.??最初の非潜水金または非未定されたオペランドを返します。 2.??これらの演算子は、コードロジックを簡素化し、読みやすさとパフォーマンスを向上させます。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

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

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境
