1.1 マイナーとは
Minor はシンプルですが優れた PHP フレームワークです。フレームワークが行うべきことを実行します。シンプルですが強力です。
フレームワーク Github アドレス: github.com/Orlion/Minor
(良いと思ったら星を付けてください(^-^)V)
作者: オーライオン
志胡: https://www.zhihu.com/people/orlion
Github: https://github.com/Orlion
1.2 マイナーの内容
1.2.1 マイナーは主に以下を提供します:
- MVC 階層構造 (実際にはモデル層はなく、ユーザーが自分で作成できます)
- Ioc (マイナーで具体化されているのは、symfony/laravel に似たサービスコンテナです)
- イベント (symfony/laravel のイベントメカニズムと同様、オブザーバーパターンの特定の実装)
- Proxy はプロキシ モードの具体的な実装です。Minor を作成したとき、Spring ライクな AOP 機能を実装したいと考えていました。しかし、書いているときに、AOP を実装したい場合は設定ファイルが必要になることがわかりました。開発が複雑になるため、AOP を諦めて Proxy クラスを提供しました)
1.2.2 マイナーが提供するものはなぜ非常に少ないのですか?
現在の PHP フレームワークのほとんどは非常に肥大化しており、さまざまな機能を提供しています。私の考えでは、これは単に車輪の再発明にすぎません (ただし、フレームワークを作成することも車輪の再発明です...)。ユーザーに多くのことを与えるべきではありません (何度も繰り返し再発明されます)。これにより、ユーザーは簡単に始めることができます。個人的には、Java の Spring フレームワークは非常に優れたフレームワークだと思います。十分にシンプルで、十分に強力で、小さいことは美しいです。マイナーはこの考えのもとに生まれたフレームワークです。あらゆる種類の厄介なページング、ORM、テンプレート エンジン、ログ、キュー、その他の機能がなければ、それは単なる「シェルフ」です。
1.2.3 利点
急いでください! 高性能! 単純! 簡単に始められます! すっきりとした構造!
小さいことは美しい!
1.3 インストール
github (github.com/Orlion/Minor) から git clone するか、zip パッケージを直接コピーしてプロジェクトに解凍するだけです。
マイナー フレームワークは、<span class="token keyword">public<span class="token演算子">/<span class="token punctuation">.htaccess<code class=" language-php"><span class="token keyword">public<span class="token operator">/<span class="token punctuation">.htaccess</span></span></span>
index<span class="token punctuation">.php</span>
ファイルは、リンクから index<span class="token punctuation">.php<code class=" language-php">mod_rewrite
を削除します。 サーバーが Apache を使用している場合は、
Nginx サーバーの場合は、URL の設定ファイルに次の指示を追加します:
location /<span style="color: #000000;"> { try_files $uri $uri</span>/ /index.php?<span style="color: #000000;">$query_string; }</span>
このようにして、http://localhost/public/ にアクセスすると、インストールが成功した画面が表示されます。 (もちろん、パブリックを削除するように設定することもできます)
1.4 マイナーの仕組み
1.4.1 全体プロセス
URL http://www.servername.com/demo/test を例に挙げます:
- すべてのリクエストは public/index.php ファイルにリダイレクトされます
-
グローバル変数を定義する
<span style="color: #008080;">define</span>('APP_DIR', <span style="color: #008080;">realpath</span>(__DIR__.'/../app/') .<span style="color: #000000;">DIRECTORY_SEPARATOR); </span><span style="color: #008080;">define</span>('PUBLIC_DIR', <span style="color: #008080;">realpath</span>(__DIR__) .<span style="color: #000000;">DIRECTORY_SEPARATOR); </span><span style="color: #008080;">define</span>('VENDOR_DIR', <span style="color: #008080;">realpath</span>(__DIR__.'/../vendor/') .<span style="color: #000000;">DIRECTORY_SEPARATOR); </span><span style="color: #008080;">define</span>('ROOT_DIR', <span style="color: #008080;">realpath</span>(__DIR__.'/../') .DIRECTORY_SEPARATOR);
-
設定ファイル $app に基づいて App オブジェクトを作成します。
<span style="color: #800080;">$app</span> = \Minor\Framework\App::<span style="color: #000000;">getInstance( </span><span style="color: #800080;">$config</span> = ['app' => <span style="color: #0000ff;">require</span> APP_DIR . 'Config/app.php', 'test' => <span style="color: #0000ff;">require</span> APP_DIR . 'Config/test.php'], <span style="color: #800080;">$providers</span> = <span style="color: #0000ff;">require</span> APP_DIR . 'Config/providers.php', <span style="color: #800080;">$routes</span> = <span style="color: #0000ff;">require</span> APP_DIR . 'Config/routes.php', <span style="color: #800080;">$events</span> = <span style="color: #0000ff;">require</span> APP_DIR . 'Config/events.php'<span style="color: #000000;"> );</span>
-
アプリはリクエストを処理してMinorResponseオブジェクトを生成します
<span style="color: #800080;">$response</span> = <span style="color: #800080;">$app</span>-><span style="color: #000000;">handle( </span><span style="color: #800080;">$request</span> = \Minor\HttpKernel\MinorRequestBuilder::<span style="color: #000000;">buildMinorRequest() );</span>
-
ユーザーに応答を返す
<span style="color: #800080;">$response</span>->send();
1.4.2 アプリがリクエストを処理する方法
<span style="color: #0000ff;"> public</span> <span style="color: #0000ff;">function</span> handle(MinorRequest <span style="color: #800080;">$minorRequest</span><span style="color: #000000;">) { </span><span style="color: #800080;">$minorResponse</span> = MinorResponse::<span style="color: #000000;">getInstance(); </span><span style="color: #800080;">$this</span>->minorRequest = <span style="color: #800080;">$minorRequest</span><span style="color: #000000;">; </span><span style="color: #0000ff;">list</span>(<span style="color: #800080;">$controllerName</span>, <span style="color: #800080;">$actionName</span>, <span style="color: #800080;">$params</span>) = <span style="color: #800080;">$this</span>->router->dispatcher(<span style="color: #800080;">$minorRequest</span>-><span style="color: #000000;">getUrl()); </span><span style="color: #0000ff;">if</span> (!(<span style="color: #800080;">$controllerName</span> && <span style="color: #800080;">$actionName</span> && <span style="color: #008080;">is_array</span>(<span style="color: #800080;">$params</span><span style="color: #000000;">))) { </span><span style="color: #0000ff;">if</span> (!Config::get(['app' => 'DEBUG']) && (<span style="color: #800080;">$handler</span> = Config::get(['app' => '404_HANDLER'])) && (<span style="color: #800080;">$handler</span><span style="color: #000000;"> instanceof \Closure)) { </span><span style="color: #800080;">$handler</span>(<span style="color: #800080;">$minorRequest</span>-><span style="color: #000000;">getRequestUrl()); } </span><span style="color: #0000ff;">else</span><span style="color: #000000;"> { </span><span style="color: #0000ff;">throw</span> <span style="color: #0000ff;">new</span> RouteException('404 Not Found'<span style="color: #000000;">); } } </span><span style="color: #0000ff;">else</span><span style="color: #000000;"> { </span><span style="color: #800080;">$minorResponse</span> = <span style="color: #800080;">$this</span>->invoke(<span style="color: #800080;">$controllerName</span>, <span style="color: #800080;">$actionName</span>, <span style="color: #800080;">$params</span><span style="color: #000000;">); } </span><span style="color: #0000ff;">return</span> <span style="color: #800080;">$minorResponse</span><span style="color: #000000;">; }</span>
-
最初にデフォルトの応答オブジェクトを初期化します
<span style="color: #800080;">$minorResponse = MinorResponse::getInstance();</span>
-
Router のdispatcher($url) メソッドを呼び出して、ルーティング設定に従って URL に対応するコントローラー、メソッド、パラメーターを取得します。
<span style="color: #0000ff;">list(<span style="color: #800080;">$controllerName, <span style="color: #800080;">$actionName, <span style="color: #800080;">$params) = <span style="color: #800080;">$this->router->dispatcher(<span style="color: #800080;">$minorRequest->getUrl());</span></span></span></span></span></span>
-
コントローラーの定式化メソッドを実行し、応答オブジェクトを返します
<span style="color: #800080;">$minorResponse = <span style="color: #800080;">$this->invoke(<span style="color: #800080;">$controllerName, <span style="color: #800080;">$actionName, <span style="color: #800080;">$params<span style="color: #000000;">); <span style="color: #0000ff;">return <span style="color: #800080;">$minorResponse;</span></span></span></span></span></span></span></span>
1.5 上記の自慢フィールドは無視してください
そうだね!ただ無視してください。思い出さなかったからといって私を責めないでください

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

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

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

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

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