Yii 2のMVC新特性

4053 ワード

この文章は主にYii 2の中のMVCを見てみましょう.もちろん、最も核心的な思想はYii 1と同じです.1同じですが、今日はYii 2のMVCとYii 1を見に来たいです.1何が違うのか、あるいは直接言うべきか、Yii 2の改善はどこにあるのか、公式に最高のPHPフレームワークの目標に向かって進撃することができます!
くだらないことは言わないで、M-V-Cの3つの部分を見てみましょう.
モデル(Model):
Yiiの中のModelsはいずれもyii\base\Modelを継承し、通常はデータを格納し、これらのデータに特定の検証ルールを設定するために使用される(rules()).それぞれのModel Classは、実はもっとコアなクラス(例えばActive Record)と組み合わせて使われることが多いのですが、Yii 2ではActive Recordの強化にも驚きましたし、後でYii 2のActive Recordを紹介する記事を書く予定です.
各モデルの中で、attributesattributes 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 fieldModelにしか割り当てられていない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には、smartytwigなど、一般的なテンプレートエンジンをサポートする公式の拡張(official extensions)もあります.これらのモデルエンジンが好きな学生は、あなたたちは幸せです.
ビューでもう一つ注目すべき点は$this変数、Yii 1.1では、$thisControllerと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