検索

Yii 2.0に何を期待するか

YII 2.0は昨年4月にベータにリリースされ、2014年半ばに最初の安定したリリースの目標が設定されました。GitHub発行リストには300のオープンな問題があり、2913が閉じています。 。 2.0RCマイルストーンへの進捗は99%でした。私の推測では、チームは近いですが、おそらくもう少し待つ必要があります。私たち全員が待っている間、すでに入手可能な例を見て、私たちが期待できることを見てみましょう。

キーテイクアウト

    YII 2.0は、名前空間、特性、作曲家統合の使用を含む大幅な改善と変更を導入し、最新のPHPフレームワーク機能を強化します。
  • フレームワークは、Blueprint CSSフレームワークからTwitter Bootstrapに移行しました。これは、美学を変えるだけでなく、迅速なアプリケーション開発のための広範なUIコンポーネントも提供します。
  • YII 2.0でのエラー処理がオーバーホールされ、すべてのエラーを例外に変換し、より有益な出力を提供し、デバッグプロセスを改善します。 YIIのコード生成ツールであるGIIは、YII 2.0に不可欠なままであり、現在、CRUD運用と国際化のためのコード生成の改善をサポートしています。
  • YII 2.0では、PHP 5.4以上が必要であり、高度なPHP機能を利用しています。これは、古いサーバー環境との互換性に影響を与える可能性がありますが、最終的にはより堅牢で安全なフレームワークを提供します。
  • 歴史のごく一部
  • Yiiの最初のバージョンは、2008年にリリースされた後、非常に速く人気がありました。創業者のQiang Xueは以前はPradoフレームワークに取り組んでおり、それからYiiを構築するために経験とフィードバックを使用しました。
  • yiiは、他のフレームワーク、言語、ライブラリの多くのアイデアを使用しています。プラド、ルビー、jQuery、シンフニ​​ー、Joomlaはすべて、インスピレーションの源として認められています。
  • Yii 2.0の最初のコミットは2011年にさかのぼりますが、昨年開発が回復しました。チームは、最先端の新世代PHPフレームワークになることを目的として書き直しました。作曲家、PSR、名前空間、特性など、最新のテクノロジーと機能を採用しています。
  • 言及する価値のあることは、ダウンロードページYIIバージョン1.1サポートが2015年12月31日に終了するため、移行を考え始める時間があるということです。
要件

名前空間と特性の使用は、要件をPHP 5.4に引き上げました。さらに、開発を開始するには、MB_STRING、PDO、およびINTL拡張機能が必要になります。これは、独自のサーバーを実行する場合は問題になりませんが、共有環境にいる場合はそうかもしれません。もちろん、やがてその問題は消えます

インストール

yiiは、作曲家からインストール可能になりました。このインストール方法をすぐに説明します

現在、利用可能な2つのアプリケーションの例があります。数ページ、連絡先ページ、ログインページを含む基本的な例があります。高度な例では、別のフロントエンドとバックエンド、データベースインタラクション、サインアップ、パスワードの回復を追加します。

始めましょう

基本的な例から始めます。 Yiiを以前に見たことがある場合は、Yii 1.1が付属しているのと同じ基本

WebAppを認識します。次のコマンドを使用して、作曲家に基本的な例をインストールします。

http://localhost/yii2-app-basic/requirements.phpを開くことで、サーバーが要件を満たしているかどうかを確認できます。実際のアプリケーションは、http:// localhost/yii2-app-basic/web/から実行されます。
composer.phar create-project --prefer-dist --stability=dev yiisoft/yii2-app-basic

これは、最初に気付くべき重要なことです。アイデアは、Symfonyと同様に、アプリケーションのドキュメントルートを/path/to/application/webに設定することです。ディレクトリレイアウトは、バージョン1.1から少し変更されました。よく見ると、変更は理にかなっており、アプリケーションのセキュリティを改善します。

以前は、すべてのアプリケーションコンポーネント(モデル、ビュー、コントローラー、フレームワーク、ベンダーライブラリ)は、保護されたフォルダーのドキュメントルートの下に住んでいました。そうすれば、セキュリティは.htaccessファイルに依存して尊重されていました。つまり、アプリケーションはNGINXでデフォルトで100%不安定でした。すべてのアプリケーションコンポーネントをドキュメントルートから遠ざけると、Webサーバーがアプリケーションコンポーネントをユーザーに送信することができなくなります。

実際のフレームワークソースを探していることに気付くかもしれません。フレームワークは、Composerを使用してインストールされたコンポーネントであるため、Vendoryiisoftyiiディレクトリの下に存在します。ここではもっとたくさんありますが、今のところ、私たちはそれをそのままにしておきます。

今のところ、ローカルWebサーバーの構成を変更し、ドキュメントルートを/path/to/application/webに設定しましょう。 virtualhost http://yii2-app-basic.localhost/を追加しましたが、自分の状況に合っているようにします。デフォルトの構成は、URL内のスクリプトファイルを非表示にするように設定されています。 Apacheを使用している場合は、.htaccessファイルをWebディレクトリに追加して、Apacheに書き換えを行うように指示する必要があります。デフォルトではありません。

基本的なYIIアプリケーションを見てください

基本的なアプリケーションが実行されているので、おめでとうございます…
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php

ありがとう!これまでのところロケット科学はありません。

Yii 2.0に何を期待するか開始ページ、静的なページ、連絡先ページ、ログインページで開始します。連絡先ページとログインフォームには、以前と同じ機能があります。 Captchaコード、フォーム検証、2人のユーザーがログインできます。ログインします。以前と同じです。何にも近い。それでも、それは良いスタートです。

基本アプリケーションの設計は劇的に変化しました。以前は、Blueprint CSSフレームワークにアプリケーションが構築されていましたが、Twitter Bootstrapから始めました。改善?おそらく青写真と比較されますが、ブートストラップは、Blueprintがこれまでにしようとした以上のものです。
Bootstrapは、あらゆる種類のアプリケーションコンポーネントを提供し、アプリケーションの構築をスピードアップします。一方、すべてのサイトはブートストラップで同じように見えると主張する人もいるかもしれません(テーマはこれを部分的に修正するだけです)、またサイトを大きくします。いずれにせよ、Yii 2.0との統合は、Yii2-Bootstrap拡張で行われます。これにより、ブートストラップコンポーネントをビューに簡単に統合できます。

あなたが気付くもう一つのことは、下部のデバッグバーです。 Symfonyのように、デフォルトでインストールされ、アクティブ化されています。これにより、構成、リクエスト、アプリケーションのロギングに関する多くの情報に迅速にアクセスできます。デバッグ情報でもリクエストの履歴を保持します。

Yii 2.0に何を期待するか yiiは、通常とは異なるエラーを処理します。 YIIは、すべてのエラー(致命的および非致命的)を例外に変換します。これらは、洞察に富んだ出力をレンダリングすることで処理され、あなたが台無しになった時点に向かって、またはコードが通知を生成しました。 Yii 1.1が基本的なPHPエラーに戻ると、コードの概要をうまくレンダリングします。これは私たちのほとんどが感謝するものです。

Yii 2.0に何を期待するかgiiも再び存在し、デフォルトでアクティブ化されます。

Yii 2.0に何を期待するかGIIは、開発をスピードアップするためのもう1つの優れたツールである、最初にコードを生成することで役立ちます。それはあなたのためにモデルとコントローラーを生成します。 CRUDジェネレーターはさらに一歩進んで、すべてのアクションに完全なMVCセットを生成します。 GIIは、Yii :: T()関数をすぐに挿入することにより、国際化に適したコードを生成します。

基本的なアプリケーションには、構築できる単純なコマンドラインアプリケーションも付属しています。 Yii 1.1はすでにこれをサポートしていましたが、Wikiから例を取得する必要があります。

それが基本アプリケーションで見つかるものです。また、利用可能なAdvanced

ユーザーの承認、認証、パスワードの復元。

アプリケーションはフロントとバックエンドに分割されています。

    基本的なバージョンを継続して、詳細を見て、コードに飛び込んでみましょう…
  • 何が変わったのですか?

    多くのことが変わりました。いくつかの変更は最初はあなたを混乱させるかもしれませんが、私はほとんどの変更が理にかなっており、受け入れやすいと思います。面白い、楽しい、または不可解な変更のいくつかがあります。

    PHP 5.4要件により、いくつかの変更が可能になりました。配列の短いタグが利用可能です。また、ビューでエコーショートタグを使用することも安全です。これは、構成設定に依存しなくなったためです。

    小さな変更ですが、速く遭遇します。以前は、Yii :: App()を使用してアプリケーションインスタンスとコンポーネントにアクセスしていました。 YII 2.0では、これは静的関数から静的変数YII :: $ APPに変更されました。
    composer.phar create-project --prefer-dist --stability=dev yiisoft/yii2-app-basic
    翻訳関数yii :: t()はまだ私たちと一緒です。 Yiiに、i18nコンポーネントを使用して、提供されているテキストを使用している現在の言語に変換するように指示します。変数を置き換えるように指示することもできます

    プレースホルダーのフォーマットとスタイリングは真剣に作り直されており、より多くのフォーマットオプションが可能になります。いくつかの例:

    このプレースホルダーのフォーマットのため、dateTimeFormatterはなくなりました:
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . index.php

    この機能は、ICUライブラリによって提供されます。 YIIドキュメントは、これのための元のドキュメントを「非常に不可解」と呼びます。私はあなたがそれを読んでそれを理解しようとします... Yiiのドキュメントにもっと読みやすいバージョンが時間内に含まれることを願っています。

    コントローラー
    <span><span><?php </span></span><span><span>$elements = array(1,2,3,4); //Yii 1.1
    </span></span><span><span>$elements = [1,2,3,4]; //Yii 2.0
    </span></span><span><span>?></span>
    </span><span><span><?php echo $someVar; ?></span> //Yii 1.1
    </span><span><span>= $someVar ?></span> //always safe to use in Yii 2.0</span></span>

    以前は、YIIアクセス制御機能を使用したい場合、AccessControl()はコントローラーの関数になります。 Yii 2.0では、アクセス制御はコントローラーの動作の一部です():

    <span><span><?php </span></span><span><span>echo `Yii<span>::</span>t('app', 'Hello, {username}!', [
    </span></span><span>  <span>'username' => $username,
    </span></span><span><span>]);
    </span></span><span><span>?></span></span></span>

    これは、Yii 1.1の方法とほぼ同じです。

    私は、例のコード(フレームワーク自体ではない!)に多くのdocblockが欠落しており、@inheritdocのコメントがたくさんあることに気づきました。これはあなたが例から期待するものではありませんが、私はこれが時間内に修正されると思います。

    モデル

    基本モデル(以前のcmodel)はあまり変わりませんでした。シナリオにより、検証ルールの実施を変更できるようになりました。現在のシナリオに基づいて検証する必要があるものを変更できます(つまり、フロントまたはバックエンドから使用する場合、異なるルールを持つモデル)。 ただし、派生したActiverCordはいくつかの深刻な変更を受けました。 ActiverCordで検索するための構文は、CDBCriteriaがなくなったため、クエリを書くようなものになりました。アクティブクエリに置き換えられました情報を取得しやすいものにします:

    <span><span><?php </span></span><span><span>echo <span>\Yii</span>::t('app', '{n, number} is spelled as {n, spellout}', ['n' => 81]);
    </span></span><span><span>echo <span>\Yii</span>::t('app', 'You are {n, ordinal} in line, please hold.', ['n' => 3]); //Will echo "You are 3rd in line, please wait.".
    </span></span><span><span>echo <span>\Yii</span>::t('app', 'There {n, plural, =0{are no cats} =1{is one cat} other{are # cats}}!', array(
    </span></span><span>    <span>'n' => 14,
    </span></span><span><span>));
    </span></span><span><span>?></span></span></span>

    関係の定義も劇的に変更されました。たとえば、ユーザーがコメントする記事を投稿するブロガーを含むサイトを使用してみましょう。著者テーブルの関係定義については、以下に説明します。 Yii 1.1:

    でどのように見えるかを始めます
    composer.phar create-project --prefer-dist --stability=dev yiisoft/yii2-app-basic

    ご覧のとおり、アクティブなレコードのすべての関係を大規模な配列に定義します。 YII 2.0では、これらすべての関係に対してActiveQueryオブジェクトを返すGetterメソッドを定義する必要があります。 中間テーブル間の関係を定義するには、関連性のあるキーワードを「スルー」を使用する必要があります。

    これを定義する2つのオプションがあります。通常、関係関数でvia()メソッドを使用します。ピボットテーブルの後にテーブル内のデータのみが必要な場合は、viatable()メソッドを使用して関係を定義することもできます。上記と同じ例ですが、現在はYii 2.0:

    の場合は
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . index.php

    これはかなり簡単な例です。 ActiveQueryオブジェクトを返すゲッター関数を介して関係を定義することで、さらに多くのことが可能になります。たとえば、返されたActiveQueryにwhere()callを追加することで、50を超えるコメントを取得する投稿のクエリを実行する特定の関数を追加できます。

    興味深い追加は、DBMS関係を定義する可能性です。たとえば、mysqlとmongodbまたはredisの関係を定義し、アプリケーションでそれらを1つのオブジェクトとして使用できます。

    ビュー

    ビューで注意すべき主なことは、これがコントローラーインスタンスをもはや指すものではないということです。ビューでは、$これはYiiWebviewオブジェクトのインスタンスです。コントローラーは、$ this-> contextからアクセスできます。

    前に言ったように

    。 PHP 5.4は、短いエコータグを一貫して利用できるようにします。これにより、混合PHPとHTMLで構成されるビューがより読みやすくなります。

    render()およびrenderPartial()関数も変更されました。レンダリングされた出力を自動的にエコーする前に、レンダリングされた出力を文字列として取得するために追加のパラメーターを追加する必要があります。 YII 2.0は、常にrender()に文字列を返します - コールのように、ウィジェットの動作方法とより一致するようにします。 yii 1.1
    <span><span><?php </span></span><span><span>$elements = array(1,2,3,4); //Yii 1.1
    </span></span><span><span>$elements = [1,2,3,4]; //Yii 2.0
    </span></span><span><span>?></span>
    </span><span><span><?php echo $someVar; ?></span> //Yii 1.1
    </span><span><span>= $someVar ?></span> //always safe to use in Yii 2.0</span></span>
    からのアップグレード

    Yii 1.1アプリケーションを時間内にYii 2.0にアップグレードすることを検討する必要がありますか?

    ブルーノškvorcは最近、SitePointでレガシーコードについて書いた。彼は、2か月で行うことができる書き直しを考慮する必要があると主張しています。

    特に

    使用しているソフトウェアがビジネス重要である場合。私は彼に同意し、あなたがあなたのアプリケーションについて真剣に感じていて、YII 1.1の終わりを超えてそれを維持したいなら、あなたはそれを考慮することを提案します。しかし、いつものように;それはあなたの状況に依存します。

    YII WebサイトでYIIをアップグレードする専用の特別なページがあります。今のところ、最大の問題はあなたの拡張です。多くの拡張機能に依存している場合、コミュニティがYII 2.0の拡張機能を作成する(再)作成するのに時間がかかるため、苦労するでしょう。あなたが本当のプロである場合、もちろん、使用している拡張機能を真剣に検討し、それらを書くことを(再)考慮することができます。

    移行マニュアルには、アプリケーションでYii 1.1とYii 2.0を一緒に実行するセクションがあります。大規模なプロジェクトでは、これは安全な移行パスを作成する良い方法です。一般的なコードをYii 2.0に移行し、より複雑なまたは拡張に満ちた部品に時間をかけてください。

    結論

    Yii 2.0の決定的なガイドを調べることで、Yii 2.0を始めることにますます熱心になります。プリプロダクションコードの問題を危険にさらすことができなかったため、私はすでに新しいプロジェクトでそれを使用するのを止めなければなりませんでした。

    Yii 2.0のドキュメント品質は、Yii 1.1から改善されました。数年前にYII 1.1を始めたときに何かを理解するのに苦労しましたが、ドキュメントは以前よりも広範囲であると感じています。

    すでにYii 2.0を見たことがありますか、それともすでに何かを構築しましたか?出会ったことを教えてください。私はあなたの経験を知りたいです!

    Yii 2.0

    に関するよくある質問

    以前のバージョンと比較してYii 2.0の新機能は何ですか?

    ​​

    YII 2.0には、その前任者に対する多くの新機能と改善が伴います。現在、名前空間の使用をサポートしているため、コード組織がはるかに容易になります。また、より柔軟で強力な新しいルーティングシステムを導入します。 ActiverCordクラスは、NOSQLデータベースを含むより多くのデータベースタイプをサポートするために再設計されています。フレームワークには、新しいRESTFUL API開発サポートも含まれており、APIの構築を容易にします。さらに、YII 2.0は、組み込みのCSRF(クロスサイトリクエスト偽造)保護を含むセキュリティ機能を改善しました。国際化(I18N)サポート。同じメッセージの複数の翻訳を異なる言語で保存できます。また、ロケールに応じて日付、数字、通貨をフォーマットすることもできます。 YII 2.0は、コンテキストに基づいた複数形とメッセージの選択もサポートしています。あなたのアプリケーション。実行されたSQLクエリ、リクエストと応答データ、パフォーマンスタイミングデータなど、アプリケーションに行われた各リクエストに関する情報を収集および表示します。この情報には、アプリケーションのページの下部にあるパネルを介してアクセスできます。

    サードパーティの拡張機能でYII 2.0を拡張するにはどうすればよいですか? 、Composer Package Managerを使用してインストールできます。インストールしたら、Yiiの組み込み機能と同じようにこれらの拡張機能を使用できます。 YIIコミュニティは、ユーザー認証、フォーム検証、データベースの抽象化など、追加の機能を提供する幅広い拡張機能を開発しました。

    YII 2.0はデータベースの移行をどのように処理しますか?

    YII 2.0は、データベースの変更を制御できるバージョンを可能にする強力なデータベース移行ツールを提供します。 YII移行/作成コマンドを使用して、新しい移行を作成できます。移行スクリプトには、移行を適用および戻す方法が含まれます。その後、Yii Migrate/Upコマンドを使用して移行を適用できます。

    Yii 2.0は、Restful API開発をどのようにサポートしますか?ルーティング、リクエスト処理、応答のフォーマット、エラー処理のサポートが含まれます。 ActiveControllerクラスを使用して、APIのCRUD(作成、読み取り、更新、削除)アクションをすばやく生成することもできます。フォーム検証システム。モデルクラスのフォームフィールドの検証ルールを定義できます。フォームが送信されると、YIIはこれらのルールに対して入力データを自動的に検証し、適切なエラーメッセージを生成します。 。従来のユーザー名/パスワード認証と、OAuthやOpenIDなどのより最新の方法の両方をサポートしています。また、組み込みのユーザーモデルを拡張して独自の認証方法を追加することもできます。

    Yii 2.0は、エラー処理とロギングをどのように処理しますか? PHPエラーと例外の両方をキャッチおよび処理できます。エラーは異なる形式でログインし、ファイル、電子メール、ブラウザーなどのさまざまな目的地に送信できます。 PhpunitとSeleniumに基づいています。ユニットテストと機能テストの両方をサポートします。テストケースを作成して、モデル、ビュー、コントローラーをテストできます。テストフレームワークは、ユーザー入力をシミュレートして出力を確認する方法も提供します。

以上がYii 2.0に何を期待するかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
Laravelでフラッシュセッションデータを使用しますLaravelでフラッシュセッションデータを使用しますMar 12, 2025 pm 05:08 PM

Laravelは、直感的なフラッシュメソッドを使用して、一時的なセッションデータの処理を簡素化します。これは、アプリケーション内に簡単なメッセージ、アラート、または通知を表示するのに最適です。 データは、デフォルトで次の要求のためにのみ持続します。 $リクエスト -

LaravelのバックエンドでReactアプリを構築する:パート2、ReactLaravelのバックエンドでReactアプリを構築する:パート2、ReactMar 04, 2025 am 09:33 AM

これは、LaravelバックエンドとのReactアプリケーションの構築に関するシリーズの2番目と最終部分です。シリーズの最初の部分では、基本的な製品上場アプリケーションのためにLaravelを使用してRESTFUL APIを作成しました。このチュートリアルでは、開発者になります

PHPのカール:REST APIでPHPカール拡張機能を使用する方法PHPのカール:REST APIでPHPカール拡張機能を使用する方法Mar 14, 2025 am 11:42 AM

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

Laravelテストでの簡略化されたHTTP応答のモッキングLaravelテストでの簡略化されたHTTP応答のモッキングMar 12, 2025 pm 05:09 PM

Laravelは簡潔なHTTP応答シミュレーション構文を提供し、HTTP相互作用テストを簡素化します。このアプローチは、テストシミュレーションをより直感的にしながら、コード冗長性を大幅に削減します。 基本的な実装は、さまざまな応答タイプのショートカットを提供します。 Illuminate \ support \ facades \ httpを使用します。 http :: fake([[ 'google.com' => 'hello world'、 'github.com' => ['foo' => 'bar']、 'forge.laravel.com' =>

Codecanyonで12の最高のPHPチャットスクリプトCodecanyonで12の最高のPHPチャットスクリプトMar 13, 2025 pm 12:08 PM

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

Laravelの通知Laravelの通知Mar 04, 2025 am 09:22 AM

この記事では、Laravel Webフレームワークの通知システムを検討します。 Laravelの通知システムを使用すると、さまざまなチャネルでユーザーに通知を送信できます。今日は、通知ovを送信する方法について説明します

PHPにおける後期静的結合の概念を説明します。PHPにおける後期静的結合の概念を説明します。Mar 21, 2025 pm 01:33 PM

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

PHPロギング:PHPログ分析のベストプラクティスPHPロギング:PHPログ分析のベストプラクティスMar 10, 2025 pm 02:32 PM

PHPロギングは、Webアプリケーションの監視とデバッグ、および重要なイベント、エラー、ランタイムの動作をキャプチャするために不可欠です。システムのパフォーマンスに関する貴重な洞察を提供し、問題の特定に役立ち、より速いトラブルシューティングをサポートします

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ヘンタイを無料で生成します。

ホットツール

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

MantisBT

MantisBT

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

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

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

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)