Kenali 15 Fitur Baru di Yii 2.0.7

Ridwan Fajar 13 Maret 2016

Kenali 15 Fitur Baru di Yii 2.0.7

Dirilis pada tanggal 14 Februari 2016, YIi Framework versi 2.0.7 telah dirilis. Versi 2.0.7 ini merupakan versi patch dari Yii 2.0 dengan lebih dari 100 penambahan fitur dan perbaikan bug minor* termasuk dengan peningkatan kualitas di dokumentasi dan penerjemahan panduan ke dalam beberapa bahasa.

Berikut ini adalah beberapa fitur baru yang terdapat di Yii 2.0.7:

IP Validator

Sekarang terdapat validator baru untuk alamat IP, range, dan mask. Validator ini dapat digunakan sebagai standalone validator atau sebagai bagian dari method rules() di dalam model:
public function rules()
{
    return [
        ['address', 'ip', 'ranges' => [
             '192.168.10.128'
             '!192.168.10.0/24',
             'any' // allows any other IP addresses
        ]],
    ];
}

i18n

Formatter mendapat method baru yaitu asDuration() untuk mendapat string yang lebih mudah dibaca ketika mengubah interval dari DateInterval object, detik, atau ISO8601:
echo Yii::$app->formatter->asDuration(131);
// outputs "2 minutes, 11 seconds"
Peningkatan lainnya adalah kemampuan untuk memilih kalender yang akan digunakan untuk date formatting. Anda dapat menggunakannya dengan mengatur properti yii\i18n\Formatter:$calendar. Sebagai contoh berikut adalah penggunaan kalender Persia:
Yii::$app->formatter->locale = 'fa_IR@calendar=persian';
Yii::$app->formatter->calendar = \IntlDateFormatter::TRADITIONAL;
Yii::$app->formatter->timeZone = 'UTC';
$value = 1451606400; // Fri, 01 Jan 2016 00:00:00 (UTC)
echo Yii::$app->formatter->asDate($value, 'php:Y');
// outputs "۱۳۹۴"
Selain itu, penerjemahan non-URL specific sekarang dapat digunakan melalui Inflector::transliterate() yang akan berguna sebagai generating keywords dan metadata lainnya untuk bahasa seperti Vietnam.

Database

Selain perbaikan, terdapat pula peningkatan yang perlu diketahui. Sekarang Anda dapat menggunakan yii\db\Expression di Query::groupBy() dan Query::orderBy():
$expression = new Expression('SUBSTR(name, 2)');
$users = (new \yii\db\Query)
    ->from('user')
    ->orderBy($expression)
    ->limit(10)
    ->all();
Untuk SQLite sekarang Anda dapat menggunakan alias untuk DSN:
'db' => [
    'dsn' => 'sqlite:@app/db/database.sqlite3',
]
Untuk join dengan relasi di ActiveRecrod cara lain yang lebih sederhana untuk alias pada tabel sudah ditambahkan:
// join the orders relation and sort the result by orders.id
$query->joinWith(['orders o'])->orderBy('o.id');

Peningkatan sintaks migrasi

sintaks migrasi yang baru dikenalkan di 2.0.6 mendapatkan beberapa perbaikan. Misalnya dukungan untuk bilangan unsigned:\
'createdBy' => $this->integer(10)->unsigned(),
Kemudian, Anda dapat menggunakan expression sebagai nilai default:
$this->integer()->defaultExpression('CURRENT_TIMESTAMP');

Console Migration Generator

./yii migrate/create semakin lebih pintar. Berdasarkan dengan nama migrasi, sekarang bisa menghasilkan boilerplate code untuk migrasi jadi Anda tidak harus mengetik banyak. Misal ./yii migrate/create create_post --fields=title:string,body:text akan menghasilkan kode seperti berikut:
class m150811_220037_create_post extends Migration
{
    public function up()
    {
        $this->createTable('post', [
            'id' => $this->primaryKey(),
            'title' => $this->string(),
            'body' => $this->text()
        ]);
    }
public function down()
{
    $this->dropTable('post');
}

}

RBAC Interface Expansion

RBAC interface sudah ditambahkan dengan getUserIdsByRole() yang akan mempermudah ketika implementasi UI Anda ketika mengelola roles dan permissions.

Error Handling and Dumping

  • Yii mendapat peningkatan untuk JSON error handling untuk mendukung kode error PHP 5.5
  • VarDumper::dump() sekarang dapat menggunakan magic method PHP __debugInfo().
  • yii\helpers\VarDumper::export() sekarang dapat melakukan export terhadap circle referenced objects yang dapat membuat logging dan debug toolbar lebih cepat
  • Error handler sekarang tidak menampilkan $_ENV dan $_SERVER di halaman error secara default karena alasan keamanan. Anda dapat menampilkannya kembali melalui kustomisasi yii\web\ErrorHandler::$displayVars

Security

Tim pengembang Yii 2.0 senantiasa melakukan pengawasan dan pemeriksaan untuk mencari nilai random dan masalah password. Sekarang komponen Security menggunakan random_bytes(), LibreSSL, mcrypt, password_hash(), dan membatasi penggunaan OpenSSL di Windows.

PHP7

ApcCache sekarang dapat menangani PHP7 APCu. Untuk menggunakannya ubah properti useApcu cache ke true.

Built-in Webserver

Sekarang Anda dapat mengembangkan aplikasi Yii 2.0 tanpa memasang web server seperti Nginx dan Apache, dengan mengetikkan ./yii serve di konsol dan membuka browser http://localhost:8080/. Hostname dan port dapat diatur melalui parameter tambahan. Ketik ./yii help serve untuk bantuan detail.

PJAX

PJAX seharusnya menjadi lebih baik. Beberapa perbaikan sudah dilkukan untuk data-methods, redirect, loading script, response, dan lainnya.

Validation

Validasi client sekarang mengabaikan disabled input. Validator compare mendapat peningkatan pesan error. Sekarang terdapat fitur untuk menentukan range untuk validator in menggunakan anonymous function. Opsi maxFiles pada validator file dapat diatur menjadi 0 untuk mengizinkan jumlah file yang tak terbatas.

Events

Events sekarang dapat menggunakan inheritance dan dapat dikaitkan dengan keseluruhan hirarki class/interface.

Assets

Sekarang dapat menentukan opsi per file CSS dan Javascript di asset bundle class:
public $css = [
    'default_options.css',
    ['tv.css', 'media' => 'tv'],
    ['screen_and_print.css', 'media' => 'screen, print']
];

public $js = [ 'normal.js', ['defered.js', 'defer' => true], ];

REST API

Untuk keperluan debugging, JsonResponseFormatter dapat dikonfigurasi ke format yang menghasilkan JSON yang lebih mudah dibaca. Anda dapat mengkonfigurasinya seperti pada cara berikut:
'response' => [
    // ...
    'formatters' => [
        \yii\web\Response::FORMAT_JSON => [
             'class' => 'yii\web\JsonResponseFormatter',
             'prettyPrint' => YII_DEBUG, // use "pretty" output in debug mode
             // ...
        ],
    ],
],
Kehadiran versi 2.0.7 ini tidak lepas dari dukungan yang dilakukan oleh komunitas Yii. Anda dapat memasang atau memperbaharui ke versi ini dengan mengikuti panduannya di [http://www.yiiframework.com/download/] dan UPGRADE.md. Sedangkan untuk mengetahui perkembangan terbaru seputar pengembangan Yii 2.0, Anda dapat mengikuti infonya di: (rfs/yiiframework)