ホームページ >バックエンド開発 >PHPチュートリアル >Yii 2.0に何を期待するか
YII 2.0は昨年4月にベータにリリースされ、2014年半ばに最初の安定したリリースの目標が設定されました。GitHub発行リストには300のオープンな問題があり、2913が閉じています。 。 2.0RCマイルストーンへの進捗は99%でした。私の推測では、チームは近いですが、おそらくもう少し待つ必要があります。私たち全員が待っている間、すでに入手可能な例を見て、私たちが期待できることを見てみましょう。
キーテイクアウトインストール
yiiは、作曲家からインストール可能になりました。このインストール方法をすぐに説明します
現在、利用可能な2つのアプリケーションの例があります。数ページ、連絡先ページ、ログインページを含む基本的な例があります。高度な例では、別のフロントエンドとバックエンド、データベースインタラクション、サインアップ、パスワードの回復を追加します。
始めましょう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
ありがとう!これまでのところロケット科学はありません。
開始ページ、静的なページ、連絡先ページ、ログインページで開始します。連絡先ページとログインフォームには、以前と同じ機能があります。 Captchaコード、フォーム検証、2人のユーザーがログインできます。ログインします。以前と同じです。何にも近い。それでも、それは良いスタートです。
基本アプリケーションの設計は劇的に変化しました。以前は、Blueprint CSSフレームワークにアプリケーションが構築されていましたが、Twitter Bootstrapから始めました。改善?おそらく青写真と比較されますが、ブートストラップは、Blueprintがこれまでにしようとした以上のものです。
Bootstrapは、あらゆる種類のアプリケーションコンポーネントを提供し、アプリケーションの構築をスピードアップします。一方、すべてのサイトはブートストラップで同じように見えると主張する人もいるかもしれません(テーマはこれを部分的に修正するだけです)、またサイトを大きくします。いずれにせよ、Yii 2.0との統合は、Yii2-Bootstrap拡張で行われます。これにより、ブートストラップコンポーネントをビューに簡単に統合できます。
yiiは、通常とは異なるエラーを処理します。 YIIは、すべてのエラー(致命的および非致命的)を例外に変換します。これらは、洞察に富んだ出力をレンダリングすることで処理され、あなたが台無しになった時点に向かって、またはコードが通知を生成しました。 Yii 1.1が基本的なPHPエラーに戻ると、コードの概要をうまくレンダリングします。これは私たちのほとんどが感謝するものです。
giiも再び存在し、デフォルトでアクティブ化されます。
GIIは、開発をスピードアップするためのもう1つの優れたツールである、最初にコードを生成することで役立ちます。それはあなたのためにモデルとコントローラーを生成します。 CRUDジェネレーターはさらに一歩進んで、すべてのアクションに完全なMVCセットを生成します。 GIIは、Yii :: T()関数をすぐに挿入することにより、国際化に適したコードを生成します。
それが基本アプリケーションで見つかるものです。また、利用可能なAdvanced
アプリケーションはフロントとバックエンドに分割されています。
この機能は、ICUライブラリによって提供されます。 YIIドキュメントは、これのための元のドキュメントを「非常に不可解」と呼びます。私はあなたがそれを読んでそれを理解しようとします... Yiiのドキュメントにもっと読みやすいバージョンが時間内に含まれることを願っています。
以前は、YIIアクセス制御機能を使用したい場合、AccessControl()はコントローラーの関数になります。 Yii 2.0では、アクセス制御はコントローラーの動作の一部です(): これは、Yii 1.1の方法とほぼ同じです。
基本モデル(以前のcmodel)はあまり変わりませんでした。シナリオにより、検証ルールの実施を変更できるようになりました。現在のシナリオに基づいて検証する必要があるものを変更できます(つまり、フロントまたはバックエンドから使用する場合、異なるルールを持つモデル)。
ただし、派生したActiverCordはいくつかの深刻な変更を受けました。 ActiverCordで検索するための構文は、CDBCriteriaがなくなったため、クエリを書くようなものになりました。アクティブクエリに置き換えられました情報を取得しやすいものにします: 関係の定義も劇的に変更されました。たとえば、ユーザーがコメントする記事を投稿するブロガーを含むサイトを使用してみましょう。著者テーブルの関係定義については、以下に説明します。 Yii 1.1: ご覧のとおり、アクティブなレコードのすべての関係を大規模な配列に定義します。 YII 2.0では、これらすべての関係に対してActiveQueryオブジェクトを返すGetterメソッドを定義する必要があります。 中間テーブル間の関係を定義するには、関連性のあるキーワードを「スルー」を使用する必要があります。 これを定義する2つのオプションがあります。通常、関係関数でvia()メソッドを使用します。ピボットテーブルの後にテーブル内のデータのみが必要な場合は、viatable()メソッドを使用して関係を定義することもできます。上記と同じ例ですが、現在はYii 2.0: これはかなり簡単な例です。 ActiveQueryオブジェクトを返すゲッター関数を介して関係を定義することで、さらに多くのことが可能になります。たとえば、返されたActiveQueryにwhere()callを追加することで、50を超えるコメントを取得する投稿のクエリを実行する特定の関数を追加できます。
前に言ったように
Yii 1.1アプリケーションを時間内にYii 2.0にアップグレードすることを検討する必要がありますか?
移行マニュアルには、アプリケーションでYii 1.1とYii 2.0を一緒に実行するセクションがあります。大規模なプロジェクトでは、これは安全な移行パスを作成する良い方法です。一般的なコードをYii 2.0に移行し、より複雑なまたは拡張に満ちた部品に時間をかけてください。
Yii 2.0のドキュメント品質は、Yii 1.1から改善されました。数年前にYII 1.1を始めたときに何かを理解するのに苦労しましたが、ドキュメントは以前よりも広範囲であると感じています。
に関するよくある質問
YII 2.0は、データベースの変更を制御できるバージョンを可能にする強力なデータベース移行ツールを提供します。 YII移行/作成コマンドを使用して、新しい移行を作成できます。移行スクリプトには、移行を適用および戻す方法が含まれます。その後、Yii Migrate/Upコマンドを使用して移行を適用できます。 Yii 2.0は、エラー処理とロギングをどのように処理しますか? PHPエラーと例外の両方をキャッチおよび処理できます。エラーは異なる形式でログインし、ファイル、電子メール、ブラウザーなどのさまざまな目的地に送信できます。 PhpunitとSeleniumに基づいています。ユニットテストと機能テストの両方をサポートします。テストケースを作成して、モデル、ビュー、コントローラーをテストできます。テストフレームワークは、ユーザー入力をシミュレートして出力を確認する方法も提供します。基本的なバージョンを継続して、詳細を見て、コードに飛び込んでみましょう…
多くのことが変わりました。いくつかの変更は最初はあなたを混乱させるかもしれませんが、私はほとんどの変更が理にかなっており、受け入れやすいと思います。面白い、楽しい、または不可解な変更のいくつかがあります。composer.phar create-project --prefer-dist --stability=dev yiisoft/yii2-app-basic
翻訳関数yii :: t()はまだ私たちと一緒です。 Yiiに、i18nコンポーネントを使用して、提供されているテキストを使用している現在の言語に変換するように指示します。変数を置き換えるように指示することもできます
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
<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><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><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>
composer.phar create-project --prefer-dist --stability=dev yiisoft/yii2-app-basic
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
ビューで注意すべき主なことは、これがコントローラーインスタンスをもはや指すものではないということです。ビューでは、$これはYiiWebviewオブジェクトのインスタンスです。コントローラーは、$ this-> contextからアクセスできます。 <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>
からのアップグレード
特に
使用しているソフトウェアがビジネス重要である場合。私は彼に同意し、あなたがあなたのアプリケーションについて真剣に感じていて、YII 1.1の終わりを超えてそれを維持したいなら、あなたはそれを考慮することを提案します。しかし、いつものように;それはあなたの状況に依存します。
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は、Restful API開発をどのようにサポートしますか?ルーティング、リクエスト処理、応答のフォーマット、エラー処理のサポートが含まれます。 ActiveControllerクラスを使用して、APIのCRUD(作成、読み取り、更新、削除)アクションをすばやく生成することもできます。フォーム検証システム。モデルクラスのフォームフィールドの検証ルールを定義できます。フォームが送信されると、YIIはこれらのルールに対して入力データを自動的に検証し、適切なエラーメッセージを生成します。 。従来のユーザー名/パスワード認証と、OAuthやOpenIDなどのより最新の方法の両方をサポートしています。また、組み込みのユーザーモデルを拡張して独自の認証方法を追加することもできます。
以上がYii 2.0に何を期待するかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。