ホームページ >バックエンド開発 >PHPチュートリアル >YIIソースコード解析(2)、YIIソースコード解析_PHPチュートリアル
前回の記事では、yii のアプリケーションの作成から結果を画面に出力するまでのプロセスを簡単に分析しました。今回は、出力に焦点を当てて、もう少し複雑なものを実行します。これは単純な「hello world」行ではなく、ビュー層によって処理する必要があります。
まだデモ ディレクトリにありますが、今回はシンプルな推測ゲームである Hangman を選択します。古いルールは入り口から始めることです。
index.php:
リーリーhelloworld アプリケーションと比較すると、今回は main.php があり、main を開いてソース コードを確認します。 リーリー
今後の実際のプロジェクトでは設定ファイルを使用することが多いので、yii設定ファイル-main.phpについて理解しておく必要があると思います'name'=>'これは通常、Web サイトのタイトルを定義します'。これは、index.php を開いたときに Web ページに表示されるタイトルです。
「defaultController」=>「これはデフォルトのコントローラです」。これは、index.php の背後にコントローラが指定されていない場合にシステムによって使用されるコントローラです。ここで指定しない場合、デフォルトは site
です。
'components'=>'これは、多次元配列で構成されたコンポーネントのパラメータです。 '特定のパラメータについては、yii マニュアルを参照してください。Yii::createWebApplication($config)->run(); 前回詳しく分析しましたが、ここでは簡単に説明します。
CWebApplication.php -> CApplication.php -> __construct($config) :
リーリー前回は設定プロセスがなかったので、$this->configure($config) は何もしませんでしたが、今回は設定パラメータがあるので、yii がどのような操作を行ったかを見てみましょう:
CApplication自体はconfigureメソッドを実装せず、CModule.php:
から継承されます。 リーリーコードは非常にシンプルで、設定パラメータのキーをクラスの属性名として使用し、値をクラスの属性値として使用します。このプロセスが完了したら、CApplication で run メソッドを実行します。
リーリー前に述べたように、ここでは $this->processRequest(); に注目してください。操作の結果、 $this->runController(''); が実行されます。 リーリー
URLはindex.phpであり、その後にパラメータがないため、main.phpで設定したゲームであるデフォルトのコントローラが使用されます。したがって、$controllerは、最後のFromソースを通じてcontrollers/gameController.phpと等しくなります。コード分析により、gameController.php に init メソッドがない場合、親クラスで定義されたデフォルトのメソッド (実際には空のメソッド) が使用されることがわかります。 リーリークラス GameController extends CController から、親クラスが CController であることがわかり、対応する run メソッドを見つけることができます。 リーリー
以前に解析されているもので、指定されていない場合はデフォルトのパラメータとなります。このときの $actionID は空で、actionID は gameController で定義されたデフォルトのアクションです。 public $defaultAction='play'; リーリー リーリー非常に多くのプロセスを経た後は、Hello World のプロセスと似ています。最後の分析によると、ここに実装されていることがわかります
リーリー リーリー リーリー リーリー$output=$this->renderPartial($view,$data,true); をエコーすると、この時点で $output がすでに最終結果を取得していることがわかります。対応するファイルは views/game/play.php
これが最終的にindex.phpに表示されるものです。このレンダリングは比較的単純なため、プログラムの処理は少なくなりますが、ソースコードを見るとわかるように、テーマなど多くの処理が行われています。今回はまずこれを分析してみます。おやすみ!
れーれーhttp://www.bkjia.com/PHPjc/925548.htmlwww.bkjia.com
true