PHP MVC フレームワーク コア クラス
それでは、コア フレームワークの例をいくつか挙げてみましょう: Framework/core の下に Framework.class.php ファイルを作成します。次のコードを記述します:
// Framework/core/Framework.class.php
class Framework {
public static function run() {
echo "run()"
}
Brotherhood Education www.lampbrother.net はこちらデモでは靜的メソッド run() が作成されました。次に、エントリ ファイルindex.php を使用してテストしてみましょう。 );
ブラウザでindex.phpにアクセスして結(jié)果を確認(rèn)できます。通常、この靜的メソッドの名前は run() または bootstrap() です。このメソッドでは、次の 3 つの主要なことを行う必要があります。
class Framework {
public static function run() {
// echo "run()";
self::init()
self:: autoload(); ;
self::dispatch();
}
プライベート靜的関數(shù)init() {
}
プライベート靜的関數(shù)dispatch() {
}
}
初期化
init()メソッド:
// 初期化
private static function init() {
// パス定數(shù)を定義
define("DS", DIRECTORY_SEPARATOR);
define("ROOT", getcwd() . DS);定義("APP_PATH", ROOT . 'アプリケーション' . DS);
define("FRAMEWORK_PATH", ROOT . "フレームワーク" . DS);
define("CONFIG_PATH", APP_PATH . "config" . DS);
define("CONTROLLER_PATH", APP_PATH . "コントローラー" . DS);
define("VIEW_PATH", APP_PATH . "ビュー" . DS);
define("CORE_PATH", FRAMEWORK_PATH . "core" . DS); ;
define("LIB_PATH", FRAMEWORK_PATH ."ライブラリ" .DS);
define("HELPER_PATH", "ヘルパー" .DS); ;
// プラットフォーム、コントローラー、アクションを定義します。例:
//index.php?p=admin&c=Goods&a=add
define("PLATFORM", isset($_REQUEST['p' ]) ? $ _REQUEST['p'] : 'ホーム');
define("コントローラー", isset($_REQUEST['c']) ? $_REQUEST['c'] : 'インデックス'); ", isset($_REQUEST['a']) ? $_REQUEST['a'] : 'index');
define("CURR_CONTROLLER_PATH", CONTROLLER_PATH . PLATFORM . DS);
define(" CURR_VIEW_PATH", VIEW_PATH . PLATFORM . DS);
require CORE_PATH .
require DB_PA TH . php";
require CORE_PATH . "Model.class.php";
// 設(shè)定ファイルをロード
$GLOBALS['config'] = include CONFIG_PATH . "config.php";
// セッションを開(kāi)始
session_start( );
}
各ステップの目的はコメントで確認(rèn)できます。
自動(dòng)ロード
プロジェクトでは、スクリプトでクラスを使用するときに手動(dòng)でロードしたり、ロードを要求したりしたくないため、PHP MVC フレームワークには自動(dòng)ロード機(jī)能があります。たとえば、symfony では、lib の下にクラスをロードしたい場(chǎng)合、それは自動(dòng)的にインポートされます。すごいですよね?次に、フレームワークに自動(dòng)ロード機(jī)能を追加しましょう。
ここでは、PHP の組み込み関數(shù) spl_autoload_register を使用します。
// 自動(dòng)ロード
private static function autoload(){
spl_autoload_register(array(__CLASS__,'load'));
}
/ / カスタムロードメソッドを定義します
private static function load($classname){
//ここでは、単にAutoLoad Appのコントローラーとモデルクラス
if(subst($ classname、-10)== "controller"){currを使用して使用を使用して使用します。 Curr- to} elseif(substr($ classname、-5)== "model"){elseifルールでも、私たちのものも例外ではありません。コントローラー クラスの場(chǎng)合は、xxxController.class.php のような名前を付ける必要があり、モデル クラスの場(chǎng)合は、xxModel.class.php という名前を付ける必要があります。フレームワークを使用するときに、その命名規(guī)則に従う必要があるのはなぜですか?自動(dòng)読み込みも理由の 1 つです。
ルーティング/ディストリビューション
// ルーティングとディスパッチ
private static functiondispatch(){
// コントローラークラスをインスタンス化し、そのアクションメソッドを呼び出します
$controller_name = "Controller" .
$action_name = ACTION . "アクション";
$controller = new $controller_name;
このステップでは、index.php が対応する Controller::Aciton() にリクエストを分配します。方法。
基本コントローラークラス
通常、フレームワークのコアクラスには基本コントローラーがあります。 symfony では sfAction と呼ばれ、iOS では UIViewController と呼ばれます。ここでは、Controller という名前を付け、framework/core の下に Controller.class.php を作成します
// Base Controller
class Controller{
// Base Controller には $loader というプロパティがあり、これは Loader クラス (導(dǎo)入済み) のインスタンスです後で)
protected $loader;
public function __construct(){
$this->loader = new Loader(); }
public function redirect($url,$message,$wait = 0){
if ( $wait == 0){
header("Location:$url");
using using - use ‐ ‐ }
}
基本コントローラーには変數(shù) $loader があり、これは Loader クラス (後述) のインスタンス化です。正確に言うと、$this->loader はインスタンス化された Load クラスを指す変數(shù)です。ここではあまり説明しませんが、これは確かに非常に重要な概念です。私は、次のステートメントの後に、
$this->loader = new Loader();
$this->load がオブジェクトであると信じている PHP 開(kāi)発者に會(huì)いました。いや、あくまで參考ですよ。これは Java から使用されており、Java が登場(chǎng)する前は、C++ および Objective C ではポインターと呼ばれていました。參照はカプセル化されたポインタ型です。たとえば、iOS (O-C) では、次のオブジェクトを作成します:
UIButton *btn = [UIButton alloc] init];
Load クラス framework.class.php で、アプリケーション コントローラーと自動(dòng)読み込みのモデルをカプセル化しました。しかし、フレームワーク ディレクトリにクラスを自動(dòng)的にロードするにはどうすればよいでしょうか?これで、フレームワーク ディレクトリにクラスと関數(shù)をロードする新しい Loader クラスを作成できます。フレームワーク クラスをロードするときは、この Loader クラスのメソッドを呼び出すだけです。 OClass Loader {
// ライブラリ クラスを読み込みます
public function library ($ lib) {
include lib_path. "$ Lib.class.php" です。
public function helper($helper); HELPER_PATH を含めます。 "{$helper}_helper.php";

ホットAIツール

Undress AI Tool
脫衣畫(huà)像を無(wú)料で

Undresser.AI Undress
リアルなヌード寫(xiě)真を作成する AI 搭載アプリ

AI Clothes Remover
寫(xiě)真から衣服を削除するオンライン AI ツール。

Clothoff.io
AI衣類(lèi)リムーバー

Video Face Swap
完全無(wú)料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡(jiǎn)単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無(wú)料のコードエディター

SublimeText3 中國(guó)語(yǔ)版
中國(guó)語(yǔ)版、とても使いやすい

ゼンドスタジオ 13.0.1
強(qiáng)力な PHP 統(tǒng)合開(kāi)発環(huán)境

ドリームウィーバー CS6
ビジュアル Web 開(kāi)発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック

Java フレームワークの商用サポートのコスト/パフォーマンスを評(píng)価するには、次の手順が必要です。 必要な保証レベルとサービス レベル アグリーメント (SLA) 保証を決定します。研究サポートチームの経験と専門(mén)知識(shí)。アップグレード、トラブルシューティング、パフォーマンスの最適化などの追加サービスを検討してください。ビジネス サポートのコストと、リスクの軽減と効率の向上を比較検討します。

ベンチマークによると、小規(guī)模で高性能なアプリケーションの場(chǎng)合、Quarkus (高速起動(dòng)、低メモリ) または Micronaut (TechEmpower に優(yōu)れた) が理想的な選択肢です。 SpringBoot は大規(guī)模なフルスタック アプリケーションに適していますが、起動(dòng)時(shí)間とメモリ使用量が若干遅くなります。

PHP フレームワークの學(xué)習(xí)曲線(xiàn)は、言語(yǔ)熟練度、フレームワークの複雑さ、ドキュメントの品質(zhì)、コミュニティのサポートによって異なります。 PHP フレームワークの學(xué)習(xí)曲線(xiàn)は、Python フレームワークと比較すると高く、Ruby フレームワークと比較すると低くなります。 Java フレームワークと比較すると、PHP フレームワークの學(xué)習(xí)曲線(xiàn)は中程度ですが、開(kāi)始までの時(shí)間は短くなります。

軽量の PHP フレームワークは、サイズが小さくリソース消費(fèi)が少ないため、アプリケーションのパフォーマンスが向上します。その特徴には、小型、高速起動(dòng)、低メモリ使用量、改善された応答速度とスループット、および削減されたリソース消費(fèi)が含まれます。 実際のケース: SlimFramework は、わずか 500 KB、高い応答性と高スループットの REST API を作成します。

さまざまな分野の Java フレームワーク學(xué)習(xí)ロードマップ: Web 開(kāi)発: SpringBoot と PlayFramework。永続層: Hibernate と JPA。サーバー側(cè)のリアクティブ プログラミング: ReactorCore と SpringWebFlux。リアルタイム コンピューティング: ApacheStorm および ApacheSpark。クラウド コンピューティング: AWS SDK for Java および Google Cloud Java。

明確で包括的なドキュメントを作成することは、Golang フレームワークにとって非常に重要です。ベスト プラクティスには、Google の Go コーディング スタイル ガイドなど、確立されたドキュメント スタイルに従うことが含まれます。見(jiàn)出し、小見(jiàn)出し、リストなどの明確な組織構(gòu)造を使用し、ナビゲーションを提供します。スタート ガイド、API リファレンス、概念など、包括的で正確な情報(bào)を提供します。コード例を使用して、概念と使用法を説明します。ドキュメントを常に最新の狀態(tài)に保ち、変更を追跡し、新機(jī)能を文書(shū)化します。 GitHub の問(wèn)題やフォーラムなどのサポートとコミュニティ リソースを提供します。 API ドキュメントなどの実踐的なサンプルを作成します。

アプリケーションのシナリオに基づいて最適な Go フレームワークを選択します。アプリケーションの種類(lèi)、言語(yǔ)機(jī)能、パフォーマンス要件、エコシステムを考慮します。一般的な Go フレームワーク: Jin (Web アプリケーション)、Echo (Web サービス)、Fiber (高スループット)、gorm (ORM)、fasthttp (速度)。実際のケース: REST API (Fiber) の構(gòu)築とデータベース (gorm) との対話(huà)。フレームワークを選択します。主要なパフォーマンスには fasthttp、柔軟な Web アプリケーションには Jin/Echo、データベース インタラクションには gorm を選択してください。

Go フレームワークの學(xué)習(xí)には、フレームワークへの過(guò)度の依存と柔軟性の制限という 5 つの誤解があります。フレームワークの規(guī)則に従わない場(chǎng)合、コードの保守が困難になります。古いライブラリを使用すると、セキュリティと互換性の問(wèn)題が発生する可能性があります。パッケージを過(guò)度に使用すると、コード構(gòu)造が難読化されます。エラー処理を無(wú)視すると、予期しない動(dòng)作やクラッシュが発生します。
