Yii 2.0。 発売日

3年間の集中的な開発と300人以上の著者 による10,000件のコミットの後、Yii 2.0 PHPフレームワークの安定バージョンがリリースされました! ご支援と忍耐に感謝します!



すでにご存知かもしれませんが、Yii 2.0はゼロから書き直されました。 この決定は、Yiiのシンプルさと拡張性を維持し、同時に最新のテクノロジーと機能を使用してさらに優れた優れたPHPフレームワークを取得したかったためです。 本日、目標が達成されたことをお知らせいたします。



YiiおよびYii 2.0に関する便利なリンク:







次に、新しいバージョンの最も興味深い機能を検討します。 フレームワークを実行しようと急いでいる場合は、マニュアルの「はじめに」セクションを読むことから始めてください。







最も興味深い





標準に従い、最新のテクノロジーを使用する




Yii 2.0は、PHPの名前空間と特性、 PSRComposer、およびBower 標準を使用します。 これにより、フレームワークでの作業がより楽しくなります。 サードパーティのライブラリは、はるかに使いやすくなりました。



強固な基盤




1.1と同様に、Yii 2.0はゲッターとセッター、 設定イベント、および動作を通じてオブジェクトプロパティをサポートします 。 新しいコードはより効率的で表現力豊かです。 たとえば、次のようにイベントを処理できます。



$response = new yii\web\Response;
$response->on('beforeSend', function ($event) {
    //   "beforeSend"
});

      
      







Yii 2.0 dependency injection container service locator. .







Yii 2.0 , .



Yii . .



1.1, Yii 2.0 Gii. , . Gii , .



API Yii 1.1 . , Yii 2.0 . Markdown, .







Yii 2.0 . SQL , XSS , CSRF , cookie .. Tom Worster Anthony Ferrara .







. Yii 2.0 , DAO, Active Record. 1.1, 2.0 Active Record, , . Active Record. , SQL.



use yii\db\Query;
use app\models\Customer;

$customers = (new Query)->from('customer')
    ->where(['status' => Customer::STATUS_ACTIVE])
    ->orderBy('id')
    ->all();
    
$customers = Customer::find()
    ->where(['status' => Customer::STATUS_ACTIVE])
    ->orderBy('id')
    ->asArray();
    ->all();

      
      







Active Record:



namespace app\models;

use app\models\Order;
use yii\db\ActiveRecord;

class Customer extends ActiveRecord
{
    public static function tableName()
    {
        return 'customer';
    }
    
    //    one-to-many   Order
    public function getOrders()
    {
        return $this->hasMany(Order::className(), ['customer_id' => 'id']);
    }
}

//    id  100
$customer = Customer::findOne(100);
//   
$orders = $customer->orders;

      
      







. , SQL . .



$customer = Customer::findOne(100);
$customer->address = '123 Anderson St';
$customer->save();  //  SQL: UPDATE `customer` SET `address`='123 Anderson St' WHERE `id`=100

      
      







Yii 2.0 . Cubrid, ElasticSearch Sphinx. NoSQL , Redis MongoDB. , , Active Record API, , . Active Record (, MySQL Redis).



Yii 2.0 /.



RESTful API




Yii RESTful API . RESTful API .



app\controllers\UserController



app\models\User



:



namespace app\controllers;

use yii\rest\ActiveController;

class UserController extends ActiveController
{
    public $modelClass = 'app\models\User';
}


      
      







urlManager



, URL:



'urlManager' => [
    'enablePrettyUrl' => true,
    'enableStrictParsing' => true,
    'showScriptName' => false,
    'rules' => [
        ['class' => 'yii\rest\UrlRule', 'controller' => 'user'],
    ],
]

      
      







! API, , :







API curl



:



$ curl -i -H "Accept:application/json" "http://localhost/users"

HTTP/1.1 200 OK
Date: Sun, 02 Mar 2014 05:31:43 GMT
Server: Apache/2.2.26 (Unix) DAV/2 PHP/5.4.20 mod_ssl/2.2.26 OpenSSL/0.9.8y
X-Powered-By: PHP/5.4.20
X-Pagination-Total-Count: 1000
X-Pagination-Page-Count: 50
X-Pagination-Current-Page: 1
X-Pagination-Per-Page: 20
Link: <http://localhost/users?page=1>; rel=self, 
      <http://localhost/users?page=2>; rel=next, 
      <http://localhost/users?page=50>; rel=last
Transfer-Encoding: chunked
Content-Type: application/json; charset=UTF-8

[
    {
        "id": 1,
        ...
    },
    {
        "id": 2,
        ...
    },
    ...
]

      
      











1.1, Yii 2.0 (, ), (HTTP). , APC, Memcache, , ..







Yii 1.1 HTML , . . .



LoginForm



, . , JavaScript.



use yii\base\Model;

class LoginForm extends Model
{
    public $username;
    public $password;

    /**
     * @return array the validation rules.
     */
    public function rules()
    {
        return [
            // username and password are both required
            [['username', 'password'], 'required'],
            // password is validated by validatePassword()
            ['password', 'validatePassword'],
        ];
    }

    /**
     * Validates the password.
     * This method serves as the inline validation for password.
     */
    public function validatePassword()
    {
        $user = User::findByUsername($this->username);
        if (!$user || !$user->validatePassword($this->password)) {
            $this->addError('password', 'Incorrect username or password.');
        }
    }
}

      
      







view:



use yii\helpers\Html;
use yii\widgets\ActiveForm;

<?php $form = ActiveForm::begin() ?>
    <?= $form->field($model, 'username') ?>
    <?= $form->field($model, 'password')->passwordInput() ?>
    <?= Html::submitButton('Login') ?>
<? ActiveForm::end() ?>

      
      











1.1, Yii 2.0 . , , cookie , (RBAC).



OpenID, OAuth1 OAuth2. , Facebook, GitHub, Google, Twitter, .







, . Bootstrap jQuery UI. , , , .. . , jQuery UI :



use yii\jui\DatePicker;

echo DatePicker::widget([
    'name' => 'date',
    'language' => 'ru',
    'dateFormat' => 'yyyy-MM-dd',
]);


      
      











. , Html



HTML Url



URL:



use yii\helpers\Html;
use yii\helpers\Url;

//     
echo Html::checkboxList('country', 'USA', $countries);

//  URL "/index?r=site/index&src=ref1#name"
echo Url::to(['site/index', 'src' => 'ref1', '#' => 'name']);


      
      











, . view, ICU. :



//     
echo \Yii::t('app', 'Today is {0, date}', time());

//     
echo \Yii::t('app', 'There {n, plural, =0{are no cats} =1{is one cat} other{are # cats}}!', ['n' => 0]);


      
      













Yii 2.0 PHP, Twig Smarty . .







Yii 2.0 Codeception Faker. , .







, , , . basic , . advanced , .







, Yii 2.0 , , . , Yii. Yii , Bootstrap. Yii , 1700 . packagist.org 1300 Yii.







:



#  composer-asset-plugin .     .
php composer.phar global require "fxp/composer-asset-plugin:1.0.0-beta2"

#    basic
php composer.phar create-project yiisoft/yii2-app-basic basic 2.0.0

      
      







, Composer. , .



, Composer GitHub , API.



, URL localhost/basic/web/index.php



.







Yii 2.0 (, RC), .



1.1 Yii 2.0 . , , 2.0, 1.1, . 1.1 .







Yii 2.0 API. . . Yii 2.0 . Larry Ullman, . Yii 2.0, Yii 1.1.







, Yii.

!



All Articles