ホームページ php教程 php手册 マイナー [PHP フレームワーク] 1. はじめに

マイナー [PHP フレームワーク] 1. はじめに

Jun 16, 2016 am 08:39 AM

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 マイナーは主に以下を提供します:

  1. MVC 階層構造 (実際にはモデル層はなく、ユーザーが自分で作成できます)
  2. Ioc (マイナーで具体化されているのは、symfony/laravel に似たサービスコンテナです)
  3. イベント (symfony/laravel のイベントメカニズムと同様、オブザーバーパターンの特定の実装)
  4. 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=" 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=" 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 を例に挙げます:

  1. すべてのリクエストは public/index.php ファイルにリダイレクトされます
  2. グローバル変数を定義する
    <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);
    ログイン後にコピー

  3. 設定ファイル $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>
    ログイン後にコピー

  4. アプリはリクエストを処理して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>
    ログイン後にコピー

  5. ユーザーに応答を返す
    <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>
ログイン後にコピー

  1. 最初にデフォルトの応答オブジェクトを初期化します
    <span style="color: #800080;">$minorResponse = MinorResponse::getInstance();</span>
    ログイン後にコピー
  2. 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>
    ログイン後にコピー

  3. コントローラーの定式化メソッドを実行し、応答オブジェクトを返します
    <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 上記の自慢フィールドは無視してください

そうだね!ただ無視してください。思い出さなかったからといって私を責めないでください

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホット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衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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