前の「Hello, World」では、Yii アプリケーション開発は簡単に思えますが、すぐに結論を急がないでください:-)、何年も前、最初の Hello, World を書いた後、初めて MFC 開発を使い始めたときのことを思い出します。 , 私はまだ MFC アプリケーションの作成を開始する方法がわかりません。これは、MFC アプリケーション フレームワークと、MFC が提供する主要なクラス ライブラリが分からないためです。基本的に、アプリケーションを作成して Yii フレームワークを学ぶことはできません。また、最初に、Yii アプリケーションを構成する主要なコンポーネントといくつかの一般的に使用されるクラスを理解する必要があります。
前回のチュートリアルでは、Yii が MVC (Model-View-Controller) を使用していることを述べ、エントリ スクリプトとメイン アプリケーション クラスの CWebApplication クラスを紹介しました。アプリケーションクラスのインスタンスは、エントリスクリプトによってオブジェクト(シングルトン)として作成されます。このアプリケーション シングルトン オブジェクトは、Yii::app() を介してどこからでもアクセスできます。
メイン アプリケーション インスタンス (CWebApplication)
デフォルトでは、アプリケーションは CWebApplication のインスタンスです。これをカスタマイズするには、通常、アプリケーション インスタンスの作成時にそのプロパティ値を初期化するための構成ファイル (または配列) を提供する必要があります。アプリケーションをカスタマイズするもう 1 つの方法は、CWebApplication を拡張することです。
設定はキーと値のペアの配列です。各キーはアプリケーション インスタンス内のプロパティの名前を表し、各値は対応するプロパティの初期値です。 たとえば、次の構成では、アプリケーションの名前とdefaultControllerプロパティを設定します。
array( 'name'=>'Yii Framework', 'defaultController'=>'site', )
通常、これらの設定は別の PHP スクリプト (例: protected/config/main.php) に保存されます。スクリプトでは、この設定配列を次のように返します:
return array(...); この設定を適用するには、以下のように設定ファイルの名前をパラメータとしてアプリケーションのコンストラクターまたは Yii に渡します。 () 。これは通常、エントリ スクリプトで行われます:
$app=Yii::createWebApplication($configFile); アプリケーション コンポーネント
アプリケーションの機能は、柔軟なコンポーネント構造を通じて簡単にカスタマイズまたは拡張できます。アプリケーションは一連のアプリケーション コンポーネントを管理し、各コンポーネントは特定の機能を実装します。 たとえば、アプリケーションは CUrlManager と CHttpRequest を使用してユーザーからのリクエストを解析します。
アプリケーションのコンポーネント属性を設定することで、アプリケーションで使用されるコンポーネントクラスとその属性値をカスタマイズできます。たとえば、キャッシュに複数の memcache サーバーを使用できるようにアプリケーションの CMemCache コンポーネントを構成できます:
array( ...... 'components'=>array( ...... 'cache'=>array( 'class'=>'CMemCache', 'servers'=>array( array('host'=>'server1', 'port'=>11211, 'weight'=>60), array('host'=>'server2', 'port'=>11211, 'weight'=>40), ), ), ),
) 上に示したように、コンポーネント配列にキャッシュ要素を追加しました。キャッシュ要素は、このコンポーネントのクラスが CMemCache であることを示し、それに応じてサーバー属性を初期化する必要があります。
アプリケーションコンポーネントにアクセスするには、 Yii::app()->ComponentID を使用します。ここで、 ComponentID はコンポーネント ID を指します (例: Yii::app()->cache)。
アプリコンポーネントは、設定でenabledをfalseに設定することで無効にできます。無効なコンポーネントにアクセスすると、Null が返されます。
CWebApplication のライフ サイクル
ユーザーのリクエストを処理するとき、アプリケーションは次の宣言サイクルを実行します。
CApplication::preinit() を通じてアプリケーションを事前初期化する
クラスのオートローダーとエラー処理を設定する;
コア クラス コンポーネントを登録します。
CApplication::init() を介してアプリケーションを初期化します。
静的アプリケーション コンポーネントをロードします。
ユーザーを処理します。リクエスト:
ユーザーリクエストを解析します。
コントローラーを実行します。
onEndRequest イベントをトリガーします。
CController コントロール クラス
コントローラーは、CController またはそのサブクラスのインスタンスです。ユーザーの要求に応じてアプリケーションによって作成されます。 コントローラーが実行されると、要求されたアクションが実行され、通常は必要なモデルが導入され、対応するビューがレンダリングされます。 アクションの最も単純な形式は、名前が action で始まるコントローラー クラスのメソッドです。
コントローラーには通常、デフォルトのアクションがあります。ユーザーのリクエストで実行するアクションが指定されていない場合は、デフォルトのアクションが実行されます。 デフォルトでは、デフォルトのアクション名はindexです。 CController::defaultAction を設定することで変更できます。
以下は、コントローラー クラスに必要な最も単純なコードです。このコントローラーにはアクションが定義されていないため、コントローラーへのリクエストは例外をスローします。
class SiteController extends CController { }
ルーティング
ユーザーが Web ページにアクセスするための URL の基本形式は /index.php?r=XController/YAction で、これは、Controllers サブディレクトリの XController.php で定義されているクラス XController の YAction メソッドに対応します。保護されたディレクトリ。 たとえば、ルート post/edit は PostController とその編集アクションを表します。デフォルトでは、URL http://hostname/index.php?r=post/edit はこのコントローラとアクションをリクエストします。 モデル (CModel クラス) モデルは、CModel またはそのサブクラスの 1 つのインスタンスです。モデルはデータとそれに関連するビジネス ロジックを保持するために使用されます。
Yii はフォーム モデルとアクティブ レコードの 2 種類のモデルを実装します。どちらも同じ基本クラス CModel を継承しています。
フォーム モデルは CFormModel のインスタンスです。フォーム モデルは、ユーザーの入力から取得したデータを保持するために使用されます。 このデータは多くの場合、取得、使用され、その後破棄されます。たとえば、ログイン ページでは、フォーム モデルを使用して、エンド ユーザーが提供したユーザー名とパスワードの情報を表すことができます。詳しくはご利用フォームをご覧ください。
アクティブ レコード (AR) は、オブジェクト指向スタイルでデータベース アクセスを抽象化するための設計パターンです。 各 AR オブジェクトは、CActiveRecord のインスタンスまたはそのサブクラスの 1 つです。データテーブル内の行を表します。 行のフィールドは、AR オブジェクトのプロパティに対応します。
View View
View は、主要なユーザー インタラクション要素を含む PHP スクリプトです。 PHP ステートメントを含めることができますが、これらのステートメントによってデータ モデルが変更されないようにすることをお勧めします。また、その単純さを (単にビューとして) 維持するのが最善です。ロジックとインターフェイスを分離するには、ロジックの大部分をビューではなくコントローラーまたはモデルに配置する必要があります。
Windows アプリケーションと比較すると、View は Windows アプリケーションの Form クラスに似ており、コントロールは Yii フレームワークに対応し、主にデータを表すために使用されるコンポーネントである CWidget になります。通常、小さなオブジェクトは、複雑で独立したユーザー インターフェイスを生成するためにビューに埋め込まれます。たとえば、カレンダー ウィジェットを使用して、ユーザー インターフェイスをより再利用しやすくします。
Asp.Net に似たマスターページは、Yii ではレイアウトと呼ばれます。
レイアウトは、ビューを装飾するために使用される特別なビュー ファイルです。通常、ユーザー インターフェイス内のビューの共通部分が含まれます。たとえば、レイアウトにはヘッダー部分とフッター部分を含めることができ、その間にコンテンツを埋め込むことができます。
...ここにヘッダー...
...ここにフッター... $content は、コンテンツ ビューのレンダリング結果を保存します。
render() を使用すると、レイアウトは暗黙的にビュー スクリプト protected/ に適用されます。 views/layouts/main.php はデフォルトのレイアウト ファイルです。これは、CWebApplication::layout または CWebApplication::layout を変更することでカスタマイズできます。レイアウトなしでビューをレンダリングするには、 renderPartial() を呼び出します。
上記では、Yii アプリケーションのいくつかの重要なコンポーネントを紹介しています。「Hello, World」の例を参照してください。また、Yii アプリケーションのファイル構造にもデフォルトの定義があります。以下は、アプリケーションのデフォルトのディレクトリ構造です。
Yii アプリケーションを正式に開発する前に、まず Yii が提供するクラス ライブラリ http://www.yiiframework.com/doc/api/ を大まかに見てください。次の図は、提供されているクラス ライブラリのパッケージ定義を示しています。 by Yii Framework:
Yii アプリケーションの主なコンポーネントと各クラスパッケージでサポートされる主な機能を最初に理解することによってのみ、Yii をより柔軟に使用して Web アプリケーションを開発することができます。
上記は、PHP 開発フレームワーク Yii Framework チュートリアル (2) Yii Web アプリケーションの基礎の内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。