検索
ホームページバックエンド開発PHPチュートリアルPHP 開発フレームワーク Yii Framework チュートリアル (2) Yii Web アプリケーションの基礎

前の「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 アプリケーションのファイル構造にもデフォルトの定義があります。以下は、アプリケーションのデフォルトのディレクトリ構造です。

PHP 開発フレームワーク Yii Framework チュートリアル (2) Yii Web アプリケーションの基礎

Yii アプリケーションを正式に開発する前に、まず Yii が提供するクラス ライブラリ http://www.yiiframework.com/doc/api/ を大まかに見てください。次の図は、提供されているクラス ライブラリのパッケージ定義を示しています。 by Yii Framework:

PHP 開発フレームワーク Yii Framework チュートリアル (2) Yii Web アプリケーションの基礎

Yii アプリケーションの主なコンポーネントと各クラスパッケージでサポートされる主な機能を最初に理解することによってのみ、Yii をより柔軟に使用して Web アプリケーションを開発することができます。

上記は、PHP 開発フレームワーク Yii Framework チュートリアル (2) Yii Web アプリケーションの基礎の内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。


声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
セッションに関連するクロスサイトスクリプティング(XSS)攻撃からどのように保護できますか?セッションに関連するクロスサイトスクリプティング(XSS)攻撃からどのように保護できますか?Apr 23, 2025 am 12:16 AM

セッション関連のXSS攻撃からアプリケーションを保護するには、次の測定が必要です。1。セッションCookieを保護するためにHTTPonlyとセキュアフラグを設定します。 2。すべてのユーザー入力のエクスポートコード。 3.コンテンツセキュリティポリシー(CSP)を実装して、スクリプトソースを制限します。これらのポリシーを通じて、セッション関連のXSS攻撃を効果的に保護し、ユーザーデータを確保できます。

PHPセッションのパフォーマンスを最適化するにはどうすればよいですか?PHPセッションのパフォーマンスを最適化するにはどうすればよいですか?Apr 23, 2025 am 12:13 AM

PHPセッションのパフォーマンスを最適化する方法は次のとおりです。1。遅延セッション開始、2。データベースを使用してセッションを保存します。これらの戦略は、高い並行性環境でのアプリケーションの効率を大幅に改善できます。

session.gc_maxlifetime構成設定とは何ですか?session.gc_maxlifetime構成設定とは何ですか?Apr 23, 2025 am 12:10 AM

thesession.gc_maxlifettinginttinginphpdethinesthelifsessessiondata、setinseconds.1)it'sconfiguredinphp.iniorviaini_set()。 2)AbalanceSneededToAvoidPerformanceIssues andunexpectedLogouts.3)php'sgarbagecollectionisisprobabilistic、影響を受けたBygc_probabi

PHPでセッション名をどのように構成しますか?PHPでセッション名をどのように構成しますか?Apr 23, 2025 am 12:08 AM

PHPでは、session_name()関数を使用してセッション名を構成できます。特定の手順は次のとおりです。1。session_name()関数を使用して、session_name( "my_session")などのセッション名を設定します。 2。セッション名を設定した後、session_start()を呼び出してセッションを開始します。セッション名の構成は、複数のアプリケーション間のセッションデータの競合を回避し、セキュリティを強化することができますが、セッション名の一意性、セキュリティ、長さ、設定タイミングに注意してください。

セッションIDをどのくらいの頻度で再生する必要がありますか?セッションIDをどのくらいの頻度で再生する必要がありますか?Apr 23, 2025 am 12:03 AM

セッションIDは、機密操作の前、30分ごとにログイン時に定期的に再生する必要があります。 1.セッション固定攻撃を防ぐためにログインするときにセッションIDを再生します。 2。安全性を向上させるために、敏感な操作の前に再生します。 3.定期的な再生は長期的な利用リスクを減らしますが、ユーザーエクスペリエンスの重量を量る必要があります。

PHPでセッションCookieパラメーターをどのように設定しますか?PHPでセッションCookieパラメーターをどのように設定しますか?Apr 22, 2025 pm 05:33 PM

PHPのセッションCookieパラメーターの設定は、session_set_cookie_params()関数を通じて達成できます。 1)この関数を使用して、有効期限、パス、ドメイン名、セキュリティフラグなどのパラメーターを設定します。 2)session_start()を呼び出して、パラメーターを有効にします。 3)ユーザーログインステータスなど、ニーズに応じてパラメーターを動的に調整します。 4)セキュリティを改善するために、セキュアとhttponlyフラグを設定することに注意してください。

PHPでセッションを使用する主な目的は何ですか?PHPでセッションを使用する主な目的は何ですか?Apr 22, 2025 pm 05:25 PM

PHPでセッションを使用する主な目的は、異なるページ間でユーザーのステータスを維持することです。 1)セッションはsession_start()関数を介して開始され、一意のセッションIDを作成し、ユーザーCookieに保存します。 2)セッションデータはサーバーに保存され、ログインステータスやショッピングカートのコンテンツなど、さまざまなリクエスト間でデータを渡すことができます。

サブドメイン間でセッションをどのように共有できますか?サブドメイン間でセッションをどのように共有できますか?Apr 22, 2025 pm 05:21 PM

サブドメイン間でセッションを共有する方法は?一般的なドメイン名にセッションCookieを設定することにより実装されます。 1.セッションCookieのドメインをサーバー側の.example.comに設定します。 2。メモリ、データベース、分散キャッシュなど、適切なセッションストレージ方法を選択します。 3. Cookieを介してセッションIDを渡すと、サーバーはIDに基づいてセッションデータを取得および更新します。

See all articles

ホット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 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール