ホームページ  >  記事  >  バックエンド開発  >  Yii2チャンネルマウスファイルの詳細な学習

Yii2チャンネルマウスファイルの詳細な学習

WBOY
WBOYオリジナル
2016-06-13 12:26:131001ブラウズ

Yii2 の徹底学習 - エントリーファイル

少し前に、簡単な PHP フレームワークを書こうとしたのですが、まだ足りないことが多くて一旦中断しました。最初に Yii2 のソース コードを読み、次に laravel のソース コードを読み、最後にこの単純な PHP フレームワークを書き続ける予定です。

これから Yii2 の研究は、例として基本的なプロジェクトに基づいて行われます。

まずYii2のエントリーファイルを見てみましょう。 Yii2 の nginx 設定を行う際に、

<span style="color: #000000;">    # server_name mysite.local;    root        </span>/path/to/basic/<span style="color: #000000;">web;    ......    location </span>/<span style="color: #000000;"> {        # Redirect everything that isn</span><span style="color: #800000;">'</span><span style="color: #800000;">t a real file to index.php</span>        try_files $uri $uri/ /index.php?<span style="color: #000000;">$args;    }</span>

のような文がいくつかあります。Web のエントリ ファイルが、index.php ファイルであることがわかります。ウェブフォルダー。

index.php ファイルの内容は次のとおりです。

<?<span style="color: #000000;">php</span><span style="color: #008000;">//</span><span style="color: #008000;"> comment out the following two lines when deployed to production// 定义 debug 的标记</span><span style="color: #008080;">defined</span>('YII_DEBUG') or <span style="color: #008080;">define</span>('YII_DEBUG', <span style="color: #0000ff;">true</span><span style="color: #000000;">);</span><span style="color: #008000;">//</span><span style="color: #008000;"> 定义环境,有 'dev' 和 'prod' 两种</span><span style="color: #008080;">defined</span>('YII_ENV') or <span style="color: #008080;">define</span>('YII_ENV', 'dev'<span style="color: #000000;">);</span><span style="color: #008000;">//</span><span style="color: #008000;"> 引入 vendor 中的 autoload.php 文件,会基于 composer 的机制自动加载类</span><span style="color: #0000ff;">require</span>(__DIR__ . '/../vendor/autoload.php'<span style="color: #000000;">);</span><span style="color: #008000;">//</span><span style="color: #008000;"> 引入 Yii 框架的文件 Yii.php</span><span style="color: #0000ff;">require</span>(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php'<span style="color: #000000;">);</span><span style="color: #008000;">//</span><span style="color: #008000;"> 引入 web 的 config 文件,并将返回值即配置项放入 $config 变量中</span><span style="color: #800080;">$config</span> = <span style="color: #0000ff;">require</span>(__DIR__ . '/../config/web.php'<span style="color: #000000;">);</span><span style="color: #008000;">//</span><span style="color: #008000;"> new 一个 yii\web\Application 的实例,并执行它的 run 方法// 用 $config 作为 yii\web\Application 初始化的参数</span>(<span style="color: #0000ff;">new</span> yii\web\Application(<span style="color: #800080;">$config</span>))->run();

コア コード、最後の文、処理のみを確認できます。すべてのリクエストはすべて run メソッドを通じて呼び出され、実行されます。具体的な内部コンテンツについては後で説明します。

Yii2 には実際にはもう 1 つの入り口があります。それは Yii2 コマンドラインのエントリーファイル、つまり最上位ディレクトリにある yii ファイルです。

yii ファイルの内容は次のとおりです。

<span style="color: #008000;">#</span><span style="color: #008000;">!/usr/bin/env php</span><?<span style="color: #000000;">php</span><span style="color: #008080;">defined</span>('YII_DEBUG') or <span style="color: #008080;">define</span>('YII_DEBUG', <span style="color: #0000ff;">true</span><span style="color: #000000;">);</span><span style="color: #008000;">//</span><span style="color: #008000;"> fcgi doesn't have STDIN and STDOUT defined by default// 定义 STDIN 和 STDOUT</span><span style="color: #008080;">defined</span>('STDIN') or <span style="color: #008080;">define</span>('STDIN', <span style="color: #008080;">fopen</span>('php://stdin', 'r'<span style="color: #000000;">));</span><span style="color: #008080;">defined</span>('STDOUT') or <span style="color: #008080;">define</span>('STDOUT', <span style="color: #008080;">fopen</span>('php://stdout', 'w'<span style="color: #000000;">));</span><span style="color: #0000ff;">require</span>(__DIR__ . '/vendor/autoload.php'<span style="color: #000000;">);</span><span style="color: #0000ff;">require</span>(__DIR__ . '/vendor/yiisoft/yii2/Yii.php'<span style="color: #000000;">);</span><span style="color: #008000;">//</span><span style="color: #008000;"> 引入 console 的 config 文件,并将返回值即配置项放入 $config 变量中</span><span style="color: #800080;">$config</span> = <span style="color: #0000ff;">require</span>(__DIR__ . '/config/console.php'<span style="color: #000000;">);</span><span style="color: #008000;">//</span><span style="color: #008000;"> new 一个 yii\console\Application 的实例,并执行它的 run 方法// 用 $config 作为 yii\console\Application 初始化的参数</span><span style="color: #800080;">$application</span> = <span style="color: #0000ff;">new</span> yii\console\Application(<span style="color: #800080;">$config</span><span style="color: #000000;">);</span><span style="color: #800080;">$exitCode</span> = <span style="color: #800080;">$application</span>-><span style="color: #000000;">run();</span><span style="color: #008000;">//</span><span style="color: #008000;"> 退出</span><span style="color: #0000ff;">exit</span>(<span style="color: #800080;">$exitCode</span>);

index.php ファイルとの最大の違いは、yiiconsoleApplication クラスを使用するのに対し、index.php ファイルは yiiconsoleApplication クラスを使用することです。 .php は yiiwebApplication を使用します。

Yii2 への入り口は 2 つあり、高度なプロジェクトであればさらに多くの入り口がありますが、基本的な内容はこの 2 つの形式のいずれかになります。

今日は簡単なオープニングなのでこの辺で。

Yii2 ソース コードに興味がある学生は、Yii2-2.0.3-annotated のプロジェクトに注目してください。Yii2 ソース コードに関する多くのコメントが追加されています。 、今後も追加され続ける予定です~

興味のある学生も参加して、Yii2 ソース コードにコメントを送信できます。

1FManghai
quot; Yii2 のソースコードを書いて読む準備をします。 go laravel のソースコードを読んだ後、最終的にこの単純な PHP フレームワークを書き続けました。これは私の現在の計画と一致しました。私が登録したブログパークのアカウントはこれを記録するために使用します。
Re: Crazy Primitive Man
@万海、それでは一緒に働きましょう。ご質問があれば、一緒に話し合ってください~ ~
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。