Yii 2のMVC新特性
この文章は主にYii 2の中のMVCを見てみましょう.もちろん、最も核心的な思想はYii 1と同じです.1同じですが、今日はYii 2のMVCとYii 1を見に来たいです.1何が違うのか、あるいは直接言うべきか、Yii 2の改善はどこにあるのか、公式に最高のPHPフレームワークの目標に向かって進撃することができます!
くだらないことは言わないで、M-V-Cの3つの部分を見てみましょう.
モデル(Model):
Yiiの中のModelsはいずれも
各モデルの中で、
この例の
複数のattributesの割り当てにもいくつかの微細な変化があり、私たちはYii 1.1の場合、よくこうなります.
Yii 2では、次のようにする必要があります.
ここでのポイントはload()関数が自動的にチェックする
ビュー(Views)
Yii 2のViewsにもいくつかの小さな変化があり、最も明らかな変化は
見ましたか
ビューでもう一つ注目すべき点は
コントローラ(Controllers)
まずコードを直接見てみましょう.
ここで見たことある?そう、Yii 2ではPHPネーミングスペースの使用が十分に開始されており、当初はYii 1であった.1の時はYii 2がもっと高級なPHP特性を使って完全に書き直すと聞いていましたが、やっぱりね、いいね.そして現在のControllerでは、出力ごとに戻るようになり、上の
最後に書く
あなたがこの文章で見たように、Yii 2のほとんどのMVCコンポーネントの変化はYii 2をよりよく使うことができて、私はこれが開発者にもっと良い開発体験をもたらすと信じて、結局Yii 2の中で少し優雅な様子を見ました!だから、どのPHPフレームワークを上手にするべきか悩んでいる皆さん、迷わないでください.Yii 2は素晴らしい選択です.ここを狂わせる:http://www.yiiframework.com/
[原文の由来]http://www.jellybool.com/post/yii2-mvc-components
くだらないことは言わないで、M-V-Cの3つの部分を見てみましょう.
モデル(Model):
Yiiの中のModelsはいずれも
yii\base\Mode
lを継承し、通常はデータを格納し、これらのデータに特定の検証ルールを設定するために使用される(rules()).それぞれのModel Classは、実はもっとコアなクラス(例えばActive Record
)と組み合わせて使われることが多いのですが、Yii 2ではActive Record
の強化にも驚きましたし、後でYii 2のActive Record
を紹介する記事を書く予定です.各モデルの中で、
attributes
とattributes label
実はYii 1.1差は多くありませんが、私が特に喜ぶべきことは、Yii 2ではrules()関数のほかに、scenarios()
関数がYii 2のModel検証を強化し、rules()
関数が具体的にModelの各attributes
フィルタ検証を担当し、scenarios()
どちらをシーンごとに宣言できるかattributes
検証不要(Which means safehere);次の例を見てみましょう. [4, 32]],
['first_name', 'string', 'max' => 128],
['password', 'required','on' => 'signup'],
];
}
public function scenarios()
{
return [
'signup' => ['username', 'password'],
'update' => ['username', 'first_name'],
];
}
}
この例の
password field
Modelにしか割り当てられていないsignupシーン(scenario)ですので、関連password
の検証はsignupというscenarioでしか機能しません.個人的にはYii 2のModelの中ですごいアップグレードだと思います.このメカニズムの発生により、私たちは開発時にいくつかのattributes
の検証と割り当てをより柔軟にコントロールすることができました.フォームの可用性とシーン化アプリケーションの設計開発を大幅に向上させました.複数のattributesの割り当てにもいくつかの微細な変化があり、私たちはYii 1.1の場合、よくこうなります.
if (isset($_POST['userModel']))
{
$model->attributes = $_POST['userModel'];
}
Yii 2では、次のようにする必要があります.
$model->load($_POST);
ここでのポイントはload()関数が自動的にチェックする
$model->formName().
定義された$POSTのインデックスビュー(Views)
Yii 2のViewsにもいくつかの小さな変化があり、最も明らかな変化は
render()
関数であり、Yii 1のように値を返す.1のように出力(output)値、例えば:public function actionIndex()
{
$models = Posts::find()->all();
echo $this->render('index', array('models' => $models));
}
見ましたか
render
の内容は今すぐecho
で出力できるようになりましたが、それがどうなっているのかはともかく(詳細は以下のControllerで説明します).もう一つは、Yii 2には、smarty
、twig
など、一般的なテンプレートエンジンをサポートする公式の拡張(official extensions)もあります.これらのモデルエンジンが好きな学生は、あなたたちは幸せです.ビューでもう一つ注目すべき点は
$this
変数、Yii 1.1では、$this
ControllerとViewsをリンクした仲介といえる.Yii 2では、$thisはyii\web\View
コンポーネントを表しています.これにより、viewに役立つViewsのプロパティを設定することができます.例えば、ページのtitle、metaなど、jsスクリプトを登録してもOKです.直感的な感じがしますか.オリジナルのhtmlを書くのと同じように、私は何がほしいですか.That is cool!コントローラ(Controllers)
まずコードを直接見てみましょう.
render('index');
}
public function actionTest()
{
// "test" ,cool
return 'test';
}
}
ここで見たことある?そう、Yii 2ではPHPネーミングスペースの使用が十分に開始されており、当初はYii 1であった.1の時はYii 2がもっと高級なPHP特性を使って完全に書き直すと聞いていましたが、やっぱりね、いいね.そして現在のControllerでは、出力ごとに戻るようになり、上の
use yii\web\Controller
のように、文字列を完全に返すことができますが、Laravelの影はありますか?しかし、Yii 2のControllerでは、これらの新しい特性の基本を認識するだけで十分です.もっと基本的なものはYii 1と同じです.1は同じ撒きで、全く恐れる必要はありません.最後に書く
あなたがこの文章で見たように、Yii 2のほとんどのMVCコンポーネントの変化はYii 2をよりよく使うことができて、私はこれが開発者にもっと良い開発体験をもたらすと信じて、結局Yii 2の中で少し優雅な様子を見ました!だから、どのPHPフレームワークを上手にするべきか悩んでいる皆さん、迷わないでください.Yii 2は素晴らしい選択です.ここを狂わせる:http://www.yiiframework.com/
[原文の由来]http://www.jellybool.com/post/yii2-mvc-components