ホームページ > バックエンド開発 > PHPチュートリアル > Yii 2フレームワークを選択する7つの理由

Yii 2フレームワークを選択する7つの理由

Jennifer Aniston
リリース: 2025-02-19 09:37:13
オリジナル
614 人が閲覧しました

Yii 2フレームワークを選択する7つの理由

昨年後半、SitePointは、PHPの上位フレームワークを強調する記事を公開しました。 4番目のスポットで結ばれたのは、Yii(発音Yee )フレームワークでした。当時、利用可能なフレームワークの最新バージョンは1.1.14でした。最近、YII 2.0が利用可能になったため、生産で使用し始めることができます。

最近、RCステータスのときにそれをカバーしましたが、完全なリリースステータスに達しただけで、代替案よりも選択する理由でトピックを再訪する時が来たと感じています。

キーテイクアウト

YII 2フレームワークは簡単にインストールでき、開発者は簡単なインストールと構成プロセスで時間を節約し、Composerを使用して処理します。
    このフレームワークは、純粋なOOPフレームワークとして動作し、後期静的バインディング、SPLクラスとインターフェイス、匿名関数などの高度なPHP機能を活用して、最新のテクノロジーを利用しています。
  • yii 2は非常に拡張可能であり、フレームワークのほぼすべてのコンポーネントを特定のニーズに合わせてカスタマイズできるようにします。
  • フレームワークは、ユニット、機能、および受け入れテストの作成プロセスを簡素化するPHPテストフレームワークであるCodeceptionと密接に統合されるテストを奨励します。
  • YII 2セキュリティアプリケーションコンポーネントでセキュリティを簡素化します。これにより、安全なアプリケーションの作成を支援するためのいくつかの方法が公開されます。また、ユーザー認証と承認のためのすぐに使用できるクラスも含まれています。
  • 1。簡単にインストールできます
  • Web開発者の場合、時間はお金であり、複雑なインストールと構成プロセスに貴重な時間を費やしたい人はいません。
  • インストールは、Composerを使用して処理されます。インストールプロセスの説明が必要な場合は、SitePointが最近ここに素晴らしい記事を公開しました。私のサイトに別のフロントエンドコンポーネントとバックエンドコンポーネントがある場合でも、基本的なアプリケーションテンプレートを使用することを好む傾向があります。代わりに、サイトのバックエンド部分にモジュールを使用することを選択します。 (YIIモジュールは、メインアプリケーション内に存在するミニアプリケーションとして最もよく説明されています)。
Note :後の例のディレクトリ参照の多くは、単純なテンプレートのディレクトリ構造を使用しています。

2。最新のテクノロジーを利用しています

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。非常に拡張可能

yiiは、ラックから見えるスーツのようなものですが、ニーズに合わせて調整するのも非常に簡単です。フレームワークのほぼすべてのコンポーネントが拡張可能です。簡単な例は、あなたのビューにユニークなボディIDを追加することです。 (なぜこれをやりたいのかを知りたい場合は、この記事をご覧ください)。

最初に、名前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>
ログイン後にコピー
ログイン後にコピー
yiiはコード受容と厳密に統合されています。 Codeceptionは、アプリケーションのユニット、機能、受け入れテストの作成プロセスを簡素化するのに役立つ優れたPHPテストフレームワークです。すべてのアプリケーションの自動テストを書いているからですよね?

CodeCeption拡張により、テスト中にアプリケーションを簡単に構成できます。提供された/tests/_config.phpファイルを編集して、テストアプリケーションを構成します。たとえば、

この構成を使用して、次のことが起こります

<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の形式を使用します

    テストは、実稼働データベースではなく、テストデータベースを使用します。
  1. YIIフレームワークの特別なモジュールは、コード受信内にも存在します。 TestGuyクラスにいくつかの方法を追加します。これは、機能テスト中にアクティブレコード(YIIのORM)を使用するのに役立ちます。たとえば、登録フォームがユーザー名「Testuser」を備えた新しいユーザーが正常に作成されたかどうかを確認したい場合は、次のことを行うことができます。
  2. 5。セキュリティを簡素化します
  3. セキュリティはあらゆるWebアプリケーションの重要な部分であり、幸いなことに、Yiiにはあなたの心を和らげるためのいくつかの素晴らしい機能があります。
yiiには、より安全なアプリケーションの作成を支援するためにいくつかの方法を公開するセキュリティアプリケーションコンポーネントが付属しています。より便利な方法のいくつかは次のとおりです
  • GeneratePassWordHash:パスワードとランダム塩から安全なハッシュを生成します。この方法により、ランダム塩が作成され、PHPの暗号関数を使用して付属の文字列からハッシュを作成します。
  • validatePassword:これは、generatepasswordhashのコンパニオン関数であり、ユーザーが提供したパスワードが保存されたハッシュと一致するかどうかを確認できます。
  • Generaterandomkey:任意の長さのランダムな文字列を作成できます
  • YIIは、すべての安全でないHTTPリクエストメソッド(put、post、削除)で有効なCSRFトークンを自動的にチェックし、ActiveForm :: begin()メソッドを使用するとトークンを生成および出力します。この機能は、メイン構成ファイルを編集して以下を含めることで無効にできます。

XSSから保護するために、YIIはHTMLPurifierと呼ばれる別のヘルパークラスを提供します。このクラスには、プロセスという名前の単一の静的メソッドがあり、同じ名前の一般的なフィルターライブラリを使用して出力をフィルタリングします。

YIIには、ユーザー認証と承認のためのすぐに使用できるクラスも含まれています。 ACF(アクセス制御フィルター)とRBAC(ロールベースのアクセス制御)の2つのタイプに承認が分かれています。
<span>use yii<span>\helpers\Html</span>;</span>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
2つのうちの簡単なのはACFであり、コントローラーの動作方法に以下を追加することにより実装されます。

前述のコードは、DefaultControllertoでゲストユーザーがログインおよびビューアクションにアクセスできるようにしますが、作成アクションは作成されません。 (?匿名のユーザーのエイリアスは、 @は認証されたユーザーを参照しています)。

RBACは、アプリケーション全体で特定のアクションを実行できるユーザーを指定するより強力な方法です。ユーザーの役割を作成し、アプリの権限を定義し、意図した役割のそれらのアクセス許可を有効にすることが含まれます。モデレーターの役割を作成したい場合は、この方法を使用し、この役割に割り当てられたすべてのユーザーが記事を承認できるようにすることができます。

RBACを使用してルールを定義することもできます。これにより、特定の条件下で、アプリケーションの特定の側面へのアクセスを許可することもできます。たとえば、ユーザーが自分の記事を編集できるようにするルールを作成できますが、他の記事は作成したものではありません。

6。開発時間を短縮
<span>public static $aliases = ['@yii' => __DIR__];</span>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

ほとんどのプロジェクトには、時間を無駄にしたくない一定の繰り返しタスクが含まれます。 Yiiは、これらのタスクに費やす時間を減らし、クライアントのニーズに合わせてアプリケーションをカスタマイズする時間を増やすのに役立ついくつかのツールを提供します。

これらのツールの中で最も強力なものの1つは「GII」と呼ばれます。 GIIはWebベースのコード足場ツールであり、次のコードテンプレートをすばやく作成できます。

モデル

コントローラー

forms

モジュール

拡張機能
  • CRUDコントローラーのアクションとビュー
  • giiは高度に構成可能です。特定の環境でのみロードするように設定できます。次のようにWeb構成ファイルを編集するだけです:
  • <span>use yii<span>\helpers\Html</span>;</span>
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    これにより、GIIはYii環境変数が

    開発に設定されている場合にのみロードされ、LocalHostを介してアクセスした場合にのみロードされることが保証されます。

    それでは、モデルジェネレーター:

    を見てみましょう

    Yii 2フレームワークを選択する7つの理由

    テーブル名はTypeaHeadウィジェットを使用して、モデルが関連付けられているテーブルを推測しようとし、すべてのフィールドにはロールオーバーツールチップがあり、それらを記入する方法を思い出させます。 GIIに生成するように依頼する前にコードをプレビューできます。すべてのコードテンプレートは完全にカスタマイズ可能です。 また、データベース移行のコードテンプレート、メッセージ翻訳(I18N)、および自動テスト用のデータベース固定具を作成するのに役立つコマンドラインツールもいくつかあります。たとえば、このコマンドを使用して新しいデータベース移行ファイルを作成できます。

    これにより、{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のキャッシュコンポーネントは、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>
    ログイン後にコピー

    最後に、Yiiには、フロントエンド資産の縮小を促進するためのコマンドラインツールがあります。次のコマンドを実行して構成テンプレートを生成するだけです。

    次に、構成を編集して、どのツールを用き付けしているかを指定します(例:閉鎖コンパイラ、Yuiコンプレッサー、またはuglifyjsなど)。生成された構成テンプレートは、次のようになります:

    次に、圧縮を実行するためにこのコンソールコマンドを実行します。

    そして最後に、圧縮された資産を使用するように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フレームワークが非常に拡張可能と見なされるのはなぜですか?

    YII 2フレームワークは、開発者がコアのコードのほぼすべてのピースをカスタマイズできるため、非常に拡張可能であると考えられています。これは、開発者がフレームワークが特定のタスクを処理する方法を調整する必要がある場合、コアコードを直接変更することなくそうすることができることを意味します。これは、高度な柔軟性と適応性を可能にし、特定のプロジェクト要件を満たすためにフレームワークを調整しやすくするため、重要な利点です。 > YII 2フレームワークは、効率的な怠zyなロード技術を通じて高性能を保証します。これは、特定のプロセスに必要なコンポーネントのみをロードし、サーバー上の負荷を削減し、アプリケーションの全体的なパフォーマンスを改善することを意味します。さらに、Yii 2はデータキャッシングもサポートしており、パフォーマンスをさらに向上させます。 。入力検証、出力フィルタリング、SQLインジェクション予防、およびクロスサイトスクリプト(XSS)予防のための組み込みツールを提供します。これらの機能により、機密データを処理する必要があるWebアプリケーションを開発するための安全な選択肢があります。ツール、GII。 GIIを使用すると、開発者はモデル、コントローラー、フォーム、モジュール、拡張機能のコードを迅速に生成できます。これにより、ボイラープレートコードの作成に必要な時間が大幅に短縮され、開発者がビジネスロジックにもっと集中できるようになります。サードパーティのコードでシームレスに動作するように設計されています。 Composer Dependency Managerを使用しているため、サードパーティライブラリとパッケージをYII 2アプリケーションに簡単に統合できます。包括的なエラー処理およびロギングシステムがあります。 PHPエラーと例外の両方を処理でき、ファイル、電子メール、ブラウザーコンソールなど、さまざまなロギングターゲットを提供します。これにより、アプリケーションの問題のデバッグと修正が簡単になります。

    YII 2フレームワークは、複雑なWebアプリケーションの開発に適していますか?

    はい、YII 2フレームワークは複雑なWebアプリケーションの開発に適しています。 MVCアーキテクチャ、データベース抽象化レイヤー、キャッシュサポートなどのさまざまなツールと機能を提供します。これにより、複雑なアプリケーションの構築と維持が容易になります。

    yii 2フレームワークは、国際化に対する広範なサポート(I18N)を提供します。これには、日付と時刻のフォーマット、数字のフォーマット、メッセージの翻訳の機能が含まれており、グローバルな視聴者向けのアプリケーションの開発が容易になります。 > yii 2フレームワークには、開発者の大規模でアクティブなコミュニティがあります。多くのフォーラム、ブログ、チュートリアルがオンラインで入手できる場所で、ヘルプやアドバイスを見つけることができます。さらに、公式YII Webサイトは包括的なドキュメントとユーザーガイドを提供します。パフォーマンス、セキュリティ機能、および拡張性。また、急速な発展をサポートしており、小規模および大規模なプロジェクトの両方に人気のある選択肢となっています。ただし、プロジェクトに最適なフレームワークは、開発チームの特定の要件と専門知識に依存します。

以上がYii 2フレームワークを選択する7つの理由の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート