Yii は設定よりも仕様を好みます。仕様に従うと、複雑な設定を作成したり維持したりすることなく、成熟した Yii アプリケーションを作成できます。 もちろん、Yii は必要に応じて設定を通じてほぼあらゆる面でカスタマイズできます。
以下では、Yii プログラミングにおける推奨開発仕様について説明します。 簡単にするために、WebRoot が Yii アプリケーションがインストールされているディレクトリであると仮定します。
デフォルトでは、Yii は次の形式の URL を認識します:
http://www.php.cn/
r
GET 変数はルートを意味し、Yii はこれをコントローラーとアクションに解析できます。 ActionID
が省略された場合、ControllerID
も省略されている場合 (または r
)、コントローラーはデフォルトのアクション (CController::defaultAction で定義されている) を使用します。変数が存在しない場合)、アプリケーションはデフォルトのコントローラー (CWebApplication::defaultController で定義) を使用します。 r
GET 变量意为 路由(route) ,它可以被Yii解析为 控制器和动作。 如果 ActionID
被省略,控制器将使用默认的动作(在CController::defaultAction中定义); 如果 ControllerID
也被省略(或者 r
变量不存在),应用将使用默认的控制器 (在CWebApplication::defaultController中定义)。
通过 CUrlManager 的帮助,可以创建更加可识别,更加 SEO 友好的 URL,例如http://www.php.cn/
。此功能在 URL Management 中有详细讲解。
Yii 推荐命名变量、函数和类时使用 驼峰风格,即每个单词的首字母大写并连在一起,中间无空格。 变量名和函数名应该使它们的第一个单词全部小写,以使其区别于类名(例如:$basePath
, runController()
,LinkPager
)。对私有类成员变量来说,我们推荐以下划线作为其名字前缀(例如: $_actionList
)。
由于在 PHP 5.3.0 之前不支持名字空间,我们推荐类要通过某种独立的方式命名,以避免和第三方类发生冲突。鉴于此, 所有的 Yii 框架类名以 "C" 作前缀。
一个针对控制器名字的特殊规则是它们必须以单词 Controller
结尾。那么控制器 ID 即类名的首字母小写并去掉单词 Controller
。 例如,PageController
类的 ID 就是 page
。这个规则使应用更加安全。它还使控制器相关的URL更加简单(例如 /index.php?r=page/index
而不是 /index.php?r=PageController/index
)。
配置是一个键值对数组。每个键代表了所配置的对象中的属性名,每个值则为相应属性的初始值。 例如,array('name'=>'My application', 'basePath'=>'./protected')
初始化了 name
和 basePath
属性为它们相应的数组值。
类中任何可写的属性都可以被配置。如果没有配置,属性将使用它们的默认值。 当配置一个属性时,最好阅读相应文档以保证初始值正确。
命名和使用文件的规范取决于它们的类型。
类文件应以它们包含的公有类命名。例如, CController 类位于 CController.php
文件中。 公有类是可以被任何其他类使用的类。每个类文件应包含最多一个公有类。 私有类(只能被一个公有类使用的类)可以放在使用此类的公有类所在的文件中。
视图文件应以视图的名字命名。例如, index
视图位于 index.php
文件中。 视图文件是一个PHP脚本文件,它包含了用于呈现内容的 HTML和PHP代码。
配置文件可以任意命名。 配置文件是一个PHP脚本,它的主要目的是返回一个体现配置的关联数组。
Yii 假定了一系列默认的目录用于不同的场合。如果需要,每个目录都可以自定义。
WebRoot/protected
: 这是 应用基础目录, 是放置所有安全敏感的PHP脚本和数据文件的地方。Yii 有一个默认的 application
别名指向此目录。 此目录及目录中的文件应该保护起来防止Web用户访问。它可以通过 CWebApplication::basePath 自定义。
WebRoot/protected/runtime
: 此目录放置应用在运行时产生的私有临时文件。 此目录必须对 Web 服务器进程可写。它可以通过 CApplication::runtimePath自定义。
WebRoot/protected/extensions
: 此目录放置所有第三方扩展。 它可以通过 CApplication::extensionPath自定义。
WebRoot/protected/modules
: 此目录放置所有的应用 模块,每个模块使用一个子目录。
WebRoot/protected/controllers
http://www.php.cn/
など、より識別しやすく SEO に適した URL を作成できます。この機能については、「URL 管理」で詳しく説明されています。 🎜🎜2. コード🎜🎜Yii では、変数、関数、クラスに名前を付けるときにキャメルケース スタイルを使用することをお勧めします。つまり、各単語の最初の文字を大文字にし、間にスペースを入れずに接続します。 変数名と関数名は、クラス名と区別するために最初の単語を小文字にする必要があります (例: $basePath
、runController()
、LinkPager
)。 。プライベート クラス メンバー変数の場合は、名前の前にアンダースコアを付けることをお勧めします (例: $_actionList
)。 🎜🎜 PHP 5.3.0 より前ではネームスペースがサポートされていないため、サードパーティのクラスとの競合を避けるために、クラスに何らかの独立した方法で名前を付けることをお勧めします。このため、すべての Yii フレームワークのクラス名には「C」という接頭辞が付けられます。 🎜🎜コントローラー名の特別なルールは、単語 Controller
で終わる必要があることです。次に、コントローラー ID はクラス名の最初の文字が小文字になり、単語 Controller
が削除されます。 たとえば、 PageController
クラスの ID は page
です。このルールにより、アプリケーションの安全性が高まります。また、コントローラー関連の URL も簡素化されます (例: /index.php?r=PageController/index
の代わりに /index.php?r=page/index
)。 🎜🎜3. 構成🎜🎜 構成はキーと値のペアの配列です。各キーは構成されたオブジェクト内のプロパティ名を表し、各値は対応するプロパティの初期値です。 たとえば、array('name'=>'My application', 'basePath'=>'./protected')
は、name
と basePath 属性は、対応する配列値です。 🎜🎜クラス内の書き込み可能なプロパティはすべて設定できます。構成されていない場合、プロパティはデフォルト値を使用します。 プロパティを構成するときは、ドキュメントを読んで初期値が正しいことを確認することをお勧めします。 🎜🎜4. ファイル🎜🎜 ファイルの名前付けと使用の規則は、その種類によって異なります。 🎜🎜クラス ファイルには、そこに含まれるパブリック クラスにちなんで名前を付ける必要があります。たとえば、CController クラスは <code>CController.php
ファイルにあります。 パブリック クラスは、他のクラスから使用できるクラスです。各クラス ファイルには、パブリック クラスを 1 つだけ含める必要があります。 プライベート クラス (1 つのパブリック クラスでのみ使用できるクラス) は、それを使用するパブリック クラスと同じファイルに配置できます。 🎜🎜ビュー ファイルにはビューにちなんだ名前を付ける必要があります。たとえば、index
ビューは index.php
ファイルにあります。 ビュー ファイルは、コンテンツのレンダリングに使用される HTML および PHP コードを含む PHP スクリプト ファイルです。 🎜🎜設定ファイルの名前は任意に付けることができます。 構成ファイルは、構成を具体化する連想配列を返すことを主な目的とする PHP スクリプトです。 🎜🎜5. ディレクトリ🎜🎜Yii は、さまざまな状況に応じて一連のデフォルトのディレクトリを想定しています。必要に応じて、各ディレクトリをカスタマイズできます。 🎜WebRoot/protected
: これは、セキュリティに敏感なすべての PHP スクリプトとデータ ファイルが配置されるアプリケーションのベース ディレクトリです。 Yii には、このディレクトリを指すデフォルトの application
エイリアスがあります。 このディレクトリとその中のファイルは、Web ユーザーによるアクセスから保護する必要があります。 CWebApplication::basePath を介してカスタマイズできます。 🎜WebRoot/protected/runtime
: このディレクトリには、アプリケーションの実行時に生成されるプライベート一時ファイルが含まれます。 このディレクトリは、Web サーバー プロセスによって書き込み可能である必要があります。 CApplication::runtimePath を介してカスタマイズできます。 🎜WebRoot/protected/extensions
: このディレクトリには、すべてのサードパーティ拡張機能が保持されます。 CApplication::extensionPath を介してカスタマイズできます。 🎜WebRoot/protected/modules
: このディレクトリにはすべてのアプリケーション モジュールが配置され、各モジュールはサブディレクトリを使用します。 🎜WebRoot/protected/controllers
: このディレクトリには、すべてのコントローラー クラス ファイルが含まれています。 CWebApplication::controllerPath を介してカスタマイズできます。 🎜WebRoot/protected/views
: このディレクトリには、コントローラー ビュー、レイアウト ビュー、システム ビューを含むすべてのビュー ファイルが配置されます。 CWebApplication::viewPath を介してカスタマイズできます。 WebRoot/protected/views
: 此目录放置所有试图文件, 包含控制器视图,布局视图和系统视图。 它可以通过 CWebApplication::viewPath 自定义。
WebRoot/protected/views/ControllerID
: 此目录放置单个控制器类中使用的视图文件。 此处的ControllerID
是指控制器的 ID 。它可以通过 CController::viewPath 自定义。
WebRoot/protected/views/layouts
: 此目录放置所有布局视图文件。它可以通过CWebApplication::layoutPath 自定义。
WebRoot/protected/views/system
: 此目录放置所有系统视图文件。 系统视图文件是用于显示异常和错误的模板。它可以通过 CWebApplication::systemViewPath 自定义。
WebRoot/assets
: 此目录放置公共资源文件。 资源文件是可以被发布的,可由Web用户访问的私有文件。此目录必须对 Web 服务器进程可写。 它可以通过 CAssetManager::basePath 自定义
WebRoot/themes
: 此目录放置应用使用的不同的主题。每个子目录即一个主题,主题的名字即目录的名字。 它可以通过 CThemeManager::basePath 自定义。
多数Web 应用是由数据库驱动的。为了最佳时间,我们 推荐在对表和列命名时使用如下命名规范。注意,这些规范并不是 Yii 所必须的。
数据库表名和列名都使用小写命名。
名字中的单词应使用下划线分割 (例如 product_order
)。
对于表名,你既可以使用单数也可以使用复数。但 不要 同时使用两者。为简单起见,我们推荐使用单数名字。
表名可以使用一个通用前缀,例如 tbl_
WebRoot/protected/views/ControllerID
: このディレクトリには、単一のコントローラー クラスで使用されるビュー ファイルが配置されます。 ここでの ControllerID
は、コントローラーの ID を指します。 CController::viewPath を介してカスタマイズできます。 🎜🎜WebRoot/protected/views/layouts
: このディレクトリには、すべてのレイアウト ビュー ファイルが含まれています。 CWebApplication::layoutPath を介してカスタマイズできます。 🎜🎜🎜🎜WebRoot/protected/views/system
: このディレクトリには、すべてのシステム ビュー ファイルが含まれています。 システム ビュー ファイルは、例外とエラーを表示するために使用されるテンプレートです。 CWebApplication::systemViewPath を介してカスタマイズできます。 🎜🎜🎜🎜WebRoot/assets
: このディレクトリにはパブリック リソース ファイルが含まれています。 リソース ファイルは、Web ユーザーが公開してアクセスできるプライベート ファイルです。このディレクトリは、Web サーバー プロセスによって書き込み可能である必要があります。 CAssetManager::basePath を通じてカスタマイズできます 🎜🎜🎜🎜WebRoot/themes
: このディレクトリには、アプリケーションで使用されるさまざまなテーマが配置されます。各サブディレクトリはトピックであり、トピックの名前がディレクトリの名前になります。 CThemeManager::basePath を介してカスタマイズできます。 🎜🎜🎜product_order
)。 🎜🎜🎜🎜テーブル名には、単数形でも複数形でも使用できます。ただし、両方を同時に使用しないでください。わかりやすくするために、単数形の名前を使用することをお勧めします。 🎜🎜🎜🎜テーブル名には、 tbl_
などの一般的な接頭辞を使用できます。これは、アプリケーションで使用されるテーブルが、別のアプリケーションで使用されるテーブルと同じデータベースに共存する場合に特に便利です。 これら 2 つのアプリケーションのテーブルは、異なるテーブル接頭辞を使用することで簡単に区別できます。 🎜🎜🎜🎜上記は Yii Framework 公式ガイド シリーズ 13 - 基礎知識: 開発仕様です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) をご覧ください。 🎜