検索
ホームページバックエンド開発PHPチュートリアルYii Framework 公式ガイド シリーズ 13 - 基礎: 開発仕様


Yii は設定よりも仕様を好みます。仕様に従うと、複雑な設定を作成したり維持したりすることなく、成熟した Yii アプリケーションを作成できます。 もちろん、Yii は必要に応じて設定を通じてほぼあらゆる面でカスタマイズできます。

以下では、Yii プログラミングにおける推奨開発仕様について説明します。 簡単にするために、WebRoot が Yii アプリケーションがインストールされているディレクトリであると仮定します。

1. URL

デフォルトでは、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 中有详细讲解。

2. 代码

Yii 推荐命名变量、函数和类时使用 驼峰风格,即每个单词的首字母大写并连在一起,中间无空格。 变量名和函数名应该使它们的第一个单词全部小写,以使其区别于类名(例如:$basePathrunController(),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)。

3. 配置

配置是一个键值对数组。每个键代表了所配置的对象中的属性名,每个值则为相应属性的初始值。 例如,array('name'=>'My application', 'basePath'=>'./protected') 初始化了 name 和 basePath 属性为它们相应的数组值。

类中任何可写的属性都可以被配置。如果没有配置,属性将使用它们的默认值。 当配置一个属性时,最好阅读相应文档以保证初始值正确。

4. 文件

命名和使用文件的规范取决于它们的类型。

类文件应以它们包含的公有类命名。例如, CController 类位于 CController.php 文件中。 公有类是可以被任何其他类使用的类。每个类文件应包含最多一个公有类。 私有类(只能被一个公有类使用的类)可以放在使用此类的公有类所在的文件中。

视图文件应以视图的名字命名。例如, index 视图位于 index.php 文件中。 视图文件是一个PHP脚本文件,它包含了用于呈现内容的 HTML和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

    CUrlManager を使用すると、http://www.php.cn/ など、より識別しやすく SEO に適した URL を作成できます。この機能については、「URL 管理」で詳しく説明されています。 🎜🎜2. コード🎜🎜Yii では、変数、関数、クラスに名前を付けるときにキャメルケース スタイルを使用することをお勧めします。つまり、各単語の最初の文字を大文字にし、間にスペースを入れずに接続します。 変数名と関数名は、クラス名と区別するために最初の単語を小文字にする必要があります (例: $basePathrunController()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') は、namebasePath 属性は、対応する配列値です。 🎜🎜クラス内の書き込み可能なプロパティはすべて設定できます。構成されていない場合、プロパティはデフォルト値を使用します。 プロパティを構成するときは、ドキュメントを読んで初期値が正しいことを確認することをお勧めします。 🎜🎜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 自定义。

    6. 数据库

    多数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 を介してカスタマイズできます。 🎜🎜🎜

    6. データベース

    🎜 ほとんどの Web アプリケーションはデータベースによって駆動されます。時間を最適化するために、テーブルと列に名前を付けるときは、次の命名規則を使用することをお勧めします。これらの仕様は Yii には必要ないことに注意してください。 🎜
      🎜🎜データベースのテーブル名と列名は小文字で付けられます。 🎜🎜🎜🎜名前内の単語はアンダースコアで区切る必要があります (例: product_order)。 🎜🎜🎜🎜テーブル名には、単数形でも複数形でも使用できます。ただし、両方を同時に使用しないでください。わかりやすくするために、単数形の名前を使用することをお勧めします。 🎜🎜🎜🎜テーブル名には、 tbl_ などの一般的な接頭辞を使用できます。これは、アプリケーションで使用されるテーブルが、別のアプリケーションで使用されるテーブルと同じデータベースに共存する場合に特に便利です。 これら 2 つのアプリケーションのテーブルは、異なるテーブル接頭辞を使用することで簡単に区別できます。 🎜🎜🎜🎜上記は Yii Framework 公式ガイド シリーズ 13 - 基礎知識: 開発仕様です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) をご覧ください。 🎜
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
誇大広告を超えて:今日のPHPの役割の評価誇大広告を超えて:今日のPHPの役割の評価Apr 12, 2025 am 12:17 AM

PHPは、特にWeb開発の分野で、最新のプログラミングで強力で広く使用されているツールのままです。 1)PHPは使いやすく、データベースとシームレスに統合されており、多くの開発者にとって最初の選択肢です。 2)動的コンテンツ生成とオブジェクト指向プログラミングをサポートし、Webサイトを迅速に作成および保守するのに適しています。 3)PHPのパフォーマンスは、データベースクエリをキャッシュおよび最適化することで改善でき、その広範なコミュニティと豊富なエコシステムにより、今日のテクノロジースタックでは依然として重要になります。

PHPの弱い参照は何ですか、そしていつ有用ですか?PHPの弱い参照は何ですか、そしていつ有用ですか?Apr 12, 2025 am 12:13 AM

PHPでは、弱い参照クラスを通じて弱い参照が実装され、ガベージコレクターがオブジェクトの回収を妨げません。弱い参照は、キャッシュシステムやイベントリスナーなどのシナリオに適しています。オブジェクトの生存を保証することはできず、ごみ収集が遅れる可能性があることに注意する必要があります。

PHPで__invoke Magicメソッドを説明してください。PHPで__invoke Magicメソッドを説明してください。Apr 12, 2025 am 12:07 AM

\ _ \ _ Invokeメソッドを使用すると、オブジェクトを関数のように呼び出すことができます。 1。オブジェクトを呼び出すことができるように\ _ \ _呼び出しメソッドを定義します。 2。$ obj(...)構文を使用すると、PHPは\ _ \ _ Invokeメソッドを実行します。 3。ロギングや計算機、コードの柔軟性の向上、読みやすさなどのシナリオに適しています。

同時性については、PHP 8.1の繊維を説明します。同時性については、PHP 8.1の繊維を説明します。Apr 12, 2025 am 12:05 AM

繊維はPhp8.1で導入され、同時処理機能が改善されました。 1)繊維は、コルーチンと同様の軽量の並行性モデルです。 2)開発者がタスクの実行フローを手動で制御できるようにし、I/O集約型タスクの処理に適しています。 3)繊維を使用すると、より効率的で応答性の高いコードを書き込むことができます。

PHPコミュニティ:リソース、サポート、開発PHPコミュニティ:リソース、サポート、開発Apr 12, 2025 am 12:04 AM

PHPコミュニティは、開発者の成長を支援するための豊富なリソースとサポートを提供します。 1)リソースには、公式のドキュメント、チュートリアル、ブログ、LaravelやSymfonyなどのオープンソースプロジェクトが含まれます。 2)StackOverFlow、Reddit、およびSlackチャネルを通じてサポートを取得できます。 3)開発動向は、RFCに従うことで学ぶことができます。 4)コミュニティへの統合は、積極的な参加、コード共有への貢献、および学習共有への貢献を通じて達成できます。

PHP対Python:違いを理解しますPHP対Python:違いを理解しますApr 11, 2025 am 12:15 AM

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHPは、シンプルな構文と高い実行効率を備えたWeb開発に適しています。 2。Pythonは、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。

PHP:それは死にかけていますか、それとも単に適応していますか?PHP:それは死にかけていますか、それとも単に適応していますか?Apr 11, 2025 am 12:13 AM

PHPは死にかけていませんが、常に適応して進化しています。 1)PHPは、1994年以来、新しいテクノロジーの傾向に適応するために複数のバージョンの反復を受けています。 2)現在、電子商取引、コンテンツ管理システム、その他の分野で広く使用されています。 3)PHP8は、パフォーマンスと近代化を改善するために、JITコンパイラおよびその他の機能を導入します。 4)Opcacheを使用してPSR-12標準に従って、パフォーマンスとコードの品質を最適化します。

PHPの未来:適応と革新PHPの未来:適応と革新Apr 11, 2025 am 12:01 AM

PHPの将来は、新しいテクノロジーの傾向に適応し、革新的な機能を導入することで達成されます。1)クラウドコンピューティング、コンテナ化、マイクロサービスアーキテクチャに適応し、DockerとKubernetesをサポートします。 2)パフォーマンスとデータ処理の効率を改善するために、JITコンパイラと列挙タイプを導入します。 3)パフォーマンスを継続的に最適化し、ベストプラクティスを促進します。

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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

MantisBT

MantisBT

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

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。