昨年後半、SitePointは、PHPの上位フレームワークを強調する記事を公開しました。 4番目のスポットで結ばれたのは、Yii(発音Yee )フレームワークでした。当時、利用可能なフレームワークの最新バージョンは1.1.14でした。最近、YII 2.0が利用可能になったため、生産で使用し始めることができます。
最近、RCステータスのときにそれをカバーしましたが、完全なリリースステータスに達しただけで、代替案よりも選択する理由でトピックを再訪する時が来たと感じています。キーテイクアウト
YIIは純粋なOOPフレームワークであり、後期静的バインディング、SPLクラスとインターフェイス、匿名関数など、PHPのより高度な機能のいくつかを利用しています。
すべてのクラスはNameSpacedであるため、PSR-4準拠のオートローダーを利用できます。つまり、YiiのHTMLヘルパークラスを含めることは、次のように簡単であることを意味します。
また、yiiでは、エイリアスを定義して、名前空間を簡素化するのに役立ちます。上記の例では、その使用ステートメントは、ディレクトリ/ベンダー/yiisoft/yii2/ヘルパーにデフォルトで配置されているクラス定義をロードします。 このエイリアスは、79行目のBaseYIIクラスで定義されています。
<span>use yii<span>\helpers\Html</span>;</span>
フレームワーク自体は、拡張機能と同様に、Composerを使用してインストールされます。拡張機能を公開するプロセスでさえ、独自のcomposer.jsonを作成し、githubでコードをホストし、拡張機能をパッケージストにリストするのと同じくらい簡単です。
3。非常に拡張可能最初に、名前View.phpを使用してAppComponentsディレクトリにファイルを作成し、以下を追加します。
次に、メインのレイアウトファイル(appviewslayoutsmain.php)で、htmlのボディタグに次のものを追加します:
<span>public static $aliases = ['@yii' => __DIR__];</span>
そして最後に、メイン構成ファイルに次のことを追加して、Yiiに独自のデフォルトではなく、拡張ビュークラスを使用するように知らせます:
<span>namespace app<span>\components</span>; </span> <span>class View extends yii<span>\web\View</span> { </span> <span>public $bodyId; </span> <span>/* Yii allows you to add magic getter methods by prefacing method names with "get" */ </span> <span>public function getBodyIdAttribute() { </span> <span>return ($this->bodyId != '') ? '' : ''; </span> <span>} </span> <span>}</span>
4。テストを奨励してください
<span><span><span><body</span> <span><span><?=$this->BodyIdAttribute?></span></span>></span></span>
この構成を使用して、次のことが起こります
<span>return [ </span> <span>// ... </span> <span>'components' => [ </span> <span>// ... </span> <span>'view' => [ </span> <span>'class' => 'app\components\View' </span> <span>] </span> <span>] </span><span>];</span>
テストのURLは、/コントローラー/アクションではなく、index.php/controller/actionの形式を使用します
XSSから保護するために、YIIはHTMLPurifierと呼ばれる別のヘルパークラスを提供します。このクラスには、プロセスという名前の単一の静的メソッドがあり、同じ名前の一般的なフィルターライブラリを使用して出力をフィルタリングします。
YIIには、ユーザー認証と承認のためのすぐに使用できるクラスも含まれています。 ACF(アクセス制御フィルター)とRBAC(ロールベースのアクセス制御)の2つのタイプに承認が分かれています。<span>use yii<span>\helpers\Html</span>;</span>
前述のコードは、DefaultControllertoでゲストユーザーがログインおよびビューアクションにアクセスできるようにしますが、作成アクションは作成されません。 (?匿名のユーザーのエイリアスは、 @は認証されたユーザーを参照しています)。
RBACは、アプリケーション全体で特定のアクションを実行できるユーザーを指定するより強力な方法です。ユーザーの役割を作成し、アプリの権限を定義し、意図した役割のそれらのアクセス許可を有効にすることが含まれます。モデレーターの役割を作成したい場合は、この方法を使用し、この役割に割り当てられたすべてのユーザーが記事を承認できるようにすることができます。
RBACを使用してルールを定義することもできます。これにより、特定の条件下で、アプリケーションの特定の側面へのアクセスを許可することもできます。たとえば、ユーザーが自分の記事を編集できるようにするルールを作成できますが、他の記事は作成したものではありません。
6。開発時間を短縮<span>public static $aliases = ['@yii' => __DIR__];</span>
ほとんどのプロジェクトには、時間を無駄にしたくない一定の繰り返しタスクが含まれます。 Yiiは、これらのタスクに費やす時間を減らし、クライアントのニーズに合わせてアプリケーションをカスタマイズする時間を増やすのに役立ついくつかのツールを提供します。
これらのツールの中で最も強力なものの1つは「GII」と呼ばれます。 GIIはWebベースのコード足場ツールであり、次のコードテンプレートをすばやく作成できます。モデル
コントローラー
モジュール
拡張機能
<span>use yii<span>\helpers\Html</span>;</span>
開発に設定されている場合にのみロードされ、LocalHostを介してアクセスした場合にのみロードされることが保証されます。
それでは、モデルジェネレーター:を見てみましょう
これにより、{appdir}/移行に新しい移行テンプレートが作成されます。
このテーブルにいくつかの列を追加したかったとしましょう。 UPメソッドに次のことを追加するだけです:
<span>public static $aliases = ['@yii' => __DIR__];</span>
そして、移行を逆転させることができることを確認するために、ダウンメソッドを編集します:
<span>namespace app<span>\components</span>; </span> <span>class View extends yii<span>\web\View</span> { </span> <span>public $bodyId; </span> <span>/* Yii allows you to add magic getter methods by prefacing method names with "get" */ </span> <span>public function getBodyIdAttribute() { </span> <span>return ($this->bodyId != '') ? '' : ''; </span> <span>} </span> <span>}</span>
テーブルの作成には、コマンドラインでコマンドを実行するだけです。
<span><span><span><body</span> <span><span><?=$this->BodyIdAttribute?></span></span>></span></span>
およびテーブルを削除するには:
<span>return [ </span> <span>// ... </span> <span>'components' => [ </span> <span>// ... </span> <span>'view' => [ </span> <span>'class' => 'app\components\View' </span> <span>] </span> <span>] </span><span>];</span>
7。パフォーマンスの向上を簡単に調整できます
<span>return [ </span> <span>'components' => [ </span> <span>'mail' => [ </span> <span>'useFileTransport' => true, </span> <span>], </span> <span>'urlManager' => [ </span> <span>'showScriptName' => true, </span> <span>], </span> <span>'db' => [ </span> <span>'dsn' => 'mysql:host=localhost;dbname=mysqldb_test', </span> <span>], </span> <span>], </span><span>];</span>
すべてのYiiのキャッシュコンポーネントは、Yii/キャッシュ/キャッシュから拡張されているため、一般的なAPIの使用中に必要なキャッシュシステムを選択できます。複数のキャッシュコンポーネントを同時に登録することもできます。 YIIは現在、データベースとファイルシステムのキャッシュ、およびAPC、Memcache、Redis、Wincache、Xcache、Zendデータキャッシュをサポートしています。
デフォルトでは、アクティブレコードを使用している場合、YIIは追加クエリを実行してモデルの生成に伴うテーブルのスキーマを決定します。メイン構成ファイルを次のように編集して、これらのスキーマをキャッシュするようにアプリケーションを設定できます。<span>$I->amOnPage('register'); </span><span>$I->fillField('username', 'testuser'); </span><span>$I->fillField('password', 'qwerty'); </span><span>$I->click('Register'); </span><span>$I->seeRecord('app\models\User', array('name' => 'testuser'));</span>
次に、圧縮を実行するためにこのコンソールコマンドを実行します。
そして最後に、圧縮された資産を使用するようにWebアプリケーション構成ファイルを編集します。
<span>return [ </span> <span>'components' => [ </span> <span>'request' => [ </span> <span>'enableCsrfValidation' => false, </span> <span>] </span> <span>];</span>
<span>use yii<span>\filters\AccessControl</span>; </span> <span>class DefaultController extends Controller { </span> <span>// ... </span> <span>public function behaviors() { </span> <span>return [ </span> <span>// ... </span> <span>'class' => AccessControl<span>::</span>className(), </span> <span>'only' => ['create', 'login', 'view'], </span> <span>'rules' => [ </span> <span>[ </span> <span>'allow' => true, </span> <span>'actions' => ['login', 'view'], </span> <span>'roles' => ['?'] </span> <span>], </span> <span>[ </span> <span>'allow' => true, </span> <span>'actions' => ['create'], </span> <span>'roles' => ['@'] </span> <span>] </span> <span>] </span> <span>]; </span> <span>} </span> <span>// ... </span><span>}</span>
優れたフレームワークと同様に、YIIは最新のWebアプリケーションを迅速に作成し、パフォーマンスがうまく機能するようにします。あなたのために多くの重い持ち上げを行うことにより、安全でテスト可能なサイトを作成するようになります。その機能のほとんどを提供したとおりに簡単に使用することも、それぞれを変更してニーズに合わせて変更することもできます。次のWebプロジェクトのためにチェックすることを本当にお勧めします! Yii 2を試しましたか?しますか?お知らせください!
Yii 2フレームワークに関するよくある質問(FAQ)
はい、YII 2フレームワークは複雑なWebアプリケーションの開発に適しています。 MVCアーキテクチャ、データベース抽象化レイヤー、キャッシュサポートなどのさまざまなツールと機能を提供します。これにより、複雑なアプリケーションの構築と維持が容易になります。
yii 2フレームワークは、国際化に対する広範なサポート(I18N)を提供します。これには、日付と時刻のフォーマット、数字のフォーマット、メッセージの翻訳の機能が含まれており、グローバルな視聴者向けのアプリケーションの開発が容易になります。 > yii 2フレームワークには、開発者の大規模でアクティブなコミュニティがあります。多くのフォーラム、ブログ、チュートリアルがオンラインで入手できる場所で、ヘルプやアドバイスを見つけることができます。さらに、公式YII Webサイトは包括的なドキュメントとユーザーガイドを提供します。パフォーマンス、セキュリティ機能、および拡張性。また、急速な発展をサポートしており、小規模および大規模なプロジェクトの両方に人気のある選択肢となっています。ただし、プロジェクトに最適なフレームワークは、開発チームの特定の要件と専門知識に依存します。以上がYii 2フレームワークを選択する7つの理由の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。