Yii 2.0.11 Resmi Dirilis di Awal Februari Ini

Ridwan Fajar 13 Februari 2017

Yii 2.0.11 Resmi Dirilis di Awal Februari Ini

Diumumkakn oleh Yii News pada 1 Februari 2017, Yii2 resmi dirilis dengan v2.0.11. Versi ini merupakan versi rilis minor dari Yii2 yang berisi lebih dari 110 peningkatan dan perbaikan bug. Ada empat perbaikan minor yang sepertinya dapat berpengaruh terhadap aplikasi yang telah menggunakan Yii2 versi sebelumnya. Untuk memastikannya silahkan ikuti panduan UPGRADE.md.

Karena Yii2.1 sedang dikerjakan saat ini, kamu harus memastikan bahwa di dalam composer.json versi Yii2 diisi dengan ~2.0.11 bukan dengan tanda * agar mencegah proyek sebelumnya tidak hancur karena otomatis memperbaharui ke versi terbaru.

Test Coverage

Tim pengembang Yii2 memutuskan tidak akan menerima pull requests tanpa unit test yang menghasilkan exception yang sangat sedikit. Keputusan ini membuat kualitas kode lebih baik dan menghemat waktu untuk code review. Lebih dari setengah 2.0.11 pull request di-merge berdasarkakn keputusan ini.

Beberapa test juga direfaktor seperti pada URL manager agar lebih hemat dan komprehensif. Alexey Rogachev melakukan pekerjaan tersebut dengan sangat baik yang berperan terhadap perbagikan bagian Javascript di Yii2 dan menambahkan test untuk memperbaiki bug selama pengerjaan.

Sekarang Javascript menjadi lebih baik berkat test yang dilakukan oleh Alex dan menjaga stabilitas Yii2.

Console

Console sudah mendukung completion untuk Bash dan Zsh saat menggunakan perintah ./yii. Untuk mengaturnya kamu dapat membacanya di tautan berikut https://github.com/yiisoft/yii2/blob/master/docs/guide/tutorial-console.md#console-command-completion-.

Perbaikan usability lainnya adalah Console dapat memberikan suggestion bila perintah yang dimasukkan tidak diketahui ataupun salah ketik.

Baca juga: Membuat Aplikasi Web Berbasis Yii2

Cache

Sekarang kamu dapat menentukan global default duration melalui defaultDuration yang dimiliki yii\caching\Cache agar dapat diganti hanya di satu tempat.

Kemudian ada satu jalan pintas yang lebih enak untuk melakukan caching:

$data = $cache->getOrSet($key, function () {
    return $this->calculateSomething();
});
which is the same as:

$data = $cache->get($key);
if ($data === false) {
    $data = $this->calculateSomething();
    $cache->set($key, $data);
}

Configuration

Setelah melewati banyak diskusi, kami memutuskan untuk mengenalkan cara pengaturan baru untuk dependencies container melalui konfigurasi aplikasi:

$config = [
    'id' => 'basic',
    // ...
    'container' => [
        'definitions' => [
            'yii\widgets\LinkPager' => ['maxButtonCount' => 5]
        ],
        'singletons' => [
        ],
    ],
];

Usability dan Shortcut

Di setiap rilis, tim pengembang Yii2 terus mencoba meningkatkan usability dari pesan error karena hal ini membuat seluruh development experience menjadi lebih nyaman. Tak terkecuali dengan rilis ini. Pesan error yang akan muncul ketika kamu memanggil komponen yang tidak ada akan menampilkan pesan error yang sangat jelas dengan apa yang telah terjadi. Sebelumnya petunjuk yang ditampilkan agak kurang jelas bila terjadi autoloading gagal.

Class Controller sekarang menerima dua shortcut methods baru yaitu asJson() dan asXml() untuk menghasilkan data JSON dan XML. Sebelumnya juga bisa, namun harus menambahkan syntactic sugar untuk menampilkan hal yang sama

Performance

  • Database tidak lagi menghasilkan query dengan kondisi 0=1 ketika berurusan dengan empty relation
  • RBAC melewat recursive checking ketika role assignment kosong
  • Unique validator hanya memilih primary key

Database

  • Tiga method baru sudah didtambahkan kke yii\db\Query yaitu filterHaving(), andFilterHaving(), dan orFilterHaving()
  • shuffleMaster ditambahkan kedalam yii\db\Connection
  • getMaster() ditambahkan ke yii\db\Connection
  • Sekarang yii\db\Query dapat dilewatkan ke method insert() seperti berikut:
$db = Yii::$app->db;
 
// insert query
 
$sourceQuery = new \yii\db\Query()
    ->select([
        'title',
        'content',
    ])->from('{{post_queue}}');
 
$command = $db->createCommand();
$command->insert('{{post}}', $sourceQuery);
 
// use query as value
 
$titleQuery = new \yii\db\Query()
    ->select('title')->from('{{titles}}')->limit(1);
 
$command = $db->createCommand();
$command->insert('{{post}}', [
    'title' => $titleQuery,
    'content' => 'Hello!',
]);

PHP 7 Compatibility

Di setiap rilis Tim Pengembang Yii2 memastikan semuanya bekerja dengan rilis stabil terakhir PHP seperti PHP7.0 dan PHP7.1. Di rilis ini tim menemukan satu masalah dalam error handler dan penggunaan Throwable yang sudah diperbaiki sekarang.

Baca juga: 4 Ekstensi Yii2 Rilis di Bulan September ini

URL Manager

Ketika menghasilkan URL dengan UrlManager::createAbsoluteUrl(), Url::to(), Url::toRoute(), memasukkan schema sebagai string kosong akan menghasilkan protocol relative URLs:

echo Url::to('@web/images/logo.gif', '');
// will print //www.example.com/images/logo.gif

Dan juga Url Rules sekarang bekerja dengan protocol relative URL yang membuat penangan URL lebih mudah dengan aplikasi yang mendukung HTTP dan HTTPS.

Dan ketika membuat URL, parameter default kosong tidak diperlukan lagi:

echo Url::to(['post/index', 'page' => 1, 'tag' => '']);
 
// now could be:
 
echo Url::to(['post/index', 'page' => 1]);

Widget

Ekstensibilitas widget sudah ditingkatkan menjadi lebih baik dengan menambahkan event firing saat init dan before/after rendering. Untuk melihat contohnya kamu dapat melihatnya disini https://github.com/yiisoft/yii2/issues/7435.

Security

Sekarang ada solusi PHP untuk menangani header attack. Seharusnya ini dapat ditangani dengan konfigurasi web server secara benar, tapi nyatanya menjadi masalah umum di shared hosting. Kita dapat menambahkan konfigurasi semacam HostControl filter. Kamu dapat melakukan konfigurasinya seperti pada tautan berikut http://www.yiiframework.com/doc-2.0/guide-security-best-practices.html#avoiding-host-header-attacks

Ada juga issue untuk masalah request data escaping di dalam debug mode exception screen. Karena hanya mempengaruhi development mode, diputuskan untuk membuat rilis terpisah untuk perbaikannya.

Composer Installer

Dengan rilis ini tim pengembang Yii2 juga mengeluarkan rilis baru Yii 2 composer installer. Plugin ini bertanggung jawab untuk mengetahui semua ekstensi yang terpasang dan menyeediakan configuration-less bootstrap mechanism. Plugin ini juga ditambahkan beberapa hooks untuk task yang berjalan saat projek baru, dibuat dengan composer.

Terima kasih kepada Robert Korulczyk datas kontribusinya. Hal ini sangat berguna untuk menangani local configuration file, yang sekarang tersedia dengan method copyFiles baru.

Silahkan untuk mengikuti panduan upgrade bila ingin menggunakan plugin ini.

(rfs/yiiframework)