Ketika kali pertama fokus belajar laravel, versi laravel yang saya gunakan untuk belajar adalah laravel versi 8. Setelah belajar, saya coba implementasi ke dalam beberapa project yang saya tangani. Dan tentu saja ketika selesai project, versi laravel yang terbaru sudah rilis. Karena versi terbaru itu biasanya update dan perbaikan dari berbagai sisi, termasuk security dan perbaikan bug, tentu lebih baik untuk menggunakan versi yang terbaru. Oleh karena saya mencoba untuk upgrade versi laravel di project yang saya tangani. Sebelum upgrade langsung, saya melakukan percobaan di project sederhana dan ini akan jadi topik bahasan di artikel kali ini.
Pada percobaan kali ini kita akan mencoba untuk update versi framework laravel dari versi 8 ke versi 10 pada sample project yang sudah disiapkan. Ketika proses update, kita akan melakukan dua kali proses, yaitu
Goal terakhir di percobaan ini tentu saja versi laravel nya berhasil diupgrade dan project sederhana bisa digunakan.
Sebelum mencoba proses update versi laravel 8 ke versi laravel 10 ini, ada beberapa hal yang harus diperhatikan dan tentu harus dipersiapkan terlebih dahulu. Berikut ini adalah tools yang saya gunakan.
Composer version 2.3.5
phpunit
untuk testing di awal dan di akhir.Sekarang kita coba cek versi php terlebih dahulu. Buka terminal, lalu run command di bawah ini.
php -v
Output ketika command di run.
PHP 8.0.30 (cli) (built: Aug 14 2023 06:42:40) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.30, Copyright (c) Zend Technologies
with Zend OPcache v8.0.30, Copyright (c), by Zend Technologies
Output di atas adalah versi PHP yang digunakan ketika di awal percobaan.
Sekarang kita coba clone project darai sample repositori:
https://github.com/qadrLabs/belajar-laravel-8-testing-crud-feature
Buka terminal lalu kita clone repositori ini menggunakan git clone
git clone https://github.com/qadrLabs/belajar-laravel-8-testing-crud-feature.git
Selanjutnya masuk ke direktori project
cd belajar-laravel-8-testing-crud-feature
Lalu kita copy .env.example
menjadi .env
cp .env.example .env
Selanjutnya kita sesuaikan credentials database di file ini.
Selanjutnya kita install dependensi dengan run command.
composer install
Lalu kita generate key menggunakan command ```
php artisan key:generate
Selanjutnya kita run command
php artisan migrate
Sekarang kita coba run testing terlebih dahulu untuk memastikan tidak terdapat error.
vendor/bin/phpunit
Output ketika command di atas kita run.
$ vendor/bin/phpunit
PHPUnit 9.5.9 by Sebastian Bergmann and contributors.
.. 2 / 2 (100%)
Time: 00:00.062, Memory: 22.00 MB
OK (2 tests, 4 assertions)
Oke, sekarang kita mulai percobaan upgrade versi 8 ke versi 9.
Sekarang kita buka file composer.json
terlebih dahulu. Lalu kita sesuaikan versi php sesuai dengan requirement php untuk laravel versi 9. Temukan baris kode berikut ini di file composer.json
.
"require": {
"php": "^7.3|^8.0",
// ... baris kode lainnya
},
Lalu kita ubah versi phpnya menjadi ^8.0.2
.
"require": {
"php": "^8.0.2",
// ... baris kode lainnya
},
Selanjutnya kita ubah versi laravel/framework
dan library nunomaduro/collision
.
"require": {
"laravel/framework": "^9.0",
// ... baris kode lainnya
},
"require-dev": {
"nunomaduro/collision": "^6.1",
// ... baris kode lainnya
},
Lalu yang terakhir ubah library facade/ignition
dengan "spatie/laravel-ignition": "^1.0"
"require-dev": {
"spatie/laravel-ignition": "^1.0",
// .. baris kode lainnya
},
Save kembali file composer.json
.
Selanjutnya kita update menggunakan command
composer update
Tunggu sampai proses update framework dan library selesai.
Apabila sudah selesai, kita coba run kembali testing untuk memastikan semuanya berjalan dengan baik.
vendor/bin/phpunit
vendor/bin/phpunit
PHPUnit 9.6.11 by Sebastian Bergmann and contributors.
.. 2 / 2 (100%)
Time: 00:00.071, Memory: 24.00 MB
OK (2 tests, 4 assertions)
Oke tidak ada error atau apapun tanda proses upgrade laravel versi 8 ke laravel 9 berhasil.
Sebagai alternatif boleh juga buka projectnya langsung di browser. Run command.
php artisan serve
Lalu buka http://127.0.0.1:8000
di browser. Apabila tidak ada error tandanya proses upgrade berhasil.
Sebelum melanjutkan proses upgrade versi laravel, kita harus ganti dulu versi PHP yang digunakan untuk memenuhi syarat requirement penggunaan Laravel versi 10, yaitu PHP versi 8.1 ke atas.
Setelah versi PHP diubah, kita cek kembali versi php yang digunakan untuk memastikan.
php -v
Output ketika command di run.
$ php -v
PHP 8.1.22 (cli) (built: Aug 14 2023 05:32:33) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.22, Copyright (c) Zend Technologies
with Zend OPcache v8.1.22, Copyright (c), by Zend Technologies
Oke requirement pertama sudah terpenuhi.
Requirement berikutnya adalah composer yang digunakan yaitu composer 2.2.0
atau lebih besar.
Sekarang kita cek versi composer
.
composer --version
Output ketika command dirun.
$ composer --version
Composer version 2.3.5 2022-04-13 16:43:00
Output di atas adalah composer
yang saya gunakan.
Oke requirement untuk composer juga sudah terpenuhi.
Sekarang kita lanjutnkan proses upgrade dari laravel versi 9 ke laravel versi 10.
Langkah pertama adalah menyesuiakan versi PHP sesuai dengan requirement laravel 10. Buka kembali file composer.json
,
"require": {
"php": "^8.0.2",
// ... baris kode lainnya
},
lalu kita sesuaikan versi php nya.
"require": {
"php": "^8.1",
// ... baris kode lainnya
},
Langkah kedua adalah update dependensi yang digunakan. Temukan laravel dan library di bawah ini.
"require": {
// ... baris kode lainnya
"laravel/framework": "^9.0",
"laravel/sanctum": "^2.11",
// ... baris kode lainnya
},
"require-dev": {
"spatie/laravel-ignition": "^1.0",
// ... baris kode lainnya
},
Lalu kita sesuaikan versinya dan tambahkan library doctrine/dbal
.
"require": {
"laravel/framework": "^10.0",
"laravel/sanctum": "^3.2",
"doctrine/dbal": "^3.0"
// ... baris kode lainnya
},
"require-dev": {
"spatie/laravel-ignition": "^2.0",
// ... baris kode lainnya
},
Karena kita menggunakan phpunit
untuk testing kita perlu menyesuikan library nya juga.
"require-dev": {
// ... baris kode lainnya
"nunomaduro/collision": "^6.1",
"phpunit/phpunit": "^9.3.3"
},
Kita sesuikan versi phpunit dan library nunomaduro/collision
.
"require-dev": {
// ... baris kode lainnya
"nunomaduro/collision": "^7.0",
"phpunit/phpunit": "^10.0"
},
Langkah selanjutnya adalh modifikasi versi minimum stability menjadi stable
.
"minimum-stability": "stable",
Karena core Laravel 10 sudah menyediakan CORS middleware, kita hapus fruitcake/laravel-cors
dependensi.
"require": {
"php": "^8.1",
"fruitcake/laravel-cors": "^2.0", // hapus ini
"guzzlehttp/guzzle": "^7.0.1",
"laravel/framework": "^10.0",
"laravel/sanctum": "^3.2",
"laravel/tinker": "^2.5",
"doctrine/dbal": "^3.0"
},
Setelah library dihapus, berikut ini adalah dependensi yang sudah kita sesuaikan.
"require": {
"php": "^8.1",
"guzzlehttp/guzzle": "^7.0.1",
"laravel/framework": "^10.0",
"laravel/sanctum": "^3.2",
"laravel/tinker": "^2.5",
"doctrine/dbal": "^3.0"
},
"require-dev": {
"spatie/laravel-ignition": "^2.0",
"fakerphp/faker": "^1.9.1",
"laravel/sail": "^1.0.1",
"mockery/mockery": "^1.4.2",
"nunomaduro/collision": "^7.0",
"phpunit/phpunit": "^10.0"
},
"minimum-stability": "stable",
Karena terdapat kode yang menggunakan library fruitcake/laravel-cors
, kita perlu menghapus penggunaannya dan menyesuaikan dengan code dari laravel.
Buka file app/Http/Kernel.php
, lalu temukan baris kode berikut ini.
protected $middleware = [
// ... baris kode lainnya
\Fruitcake\Cors\HandleCors::class, // temukan class ini
// ... baris kode lainnya
];
Lalu kita sesuaikan menjadi baris kode berikut.
protected $middleware = [
// ... baris kode lainnya
\Illuminate\Http\Middleware\HandleCors::class,
// ... baris kode lainnya
];
Save kembali file app/Http/Kernel.php
.
Langkah selanjutnya adalah update juga library third party yang digunakan. Ini langkah opsional, karena di sample project ada library tambahan untuk testing jadi kita coba update juga.
Buka kembali file composer.json
, lalu temukan baris kode berikut ini.
"require-dev": {
"laravel/browser-kit-testing": "^6.4",
// ... baris kode lainnya
},
Kita sesuaikan dengan versi library yang support laravel 10.
"require-dev": {
"laravel/browser-kit-testing": "^7.0",
// ... baris kode lainnya
},
Sekarang kita mulai proses update framework dan dependensi yang sudah kita sesuaikan dengan run command.
composer update
Tunggu sampai proses update selesai.
Setelah selesai kita coba run testing menggunakan command.
vendor/bin/phpunit
Output ketika dirunnya ternyata perlu ada penyesuaian konfigurasi phpunit untuk versi terbaru.
vendor/bin/phpunit
PHPUnit 10.3.2 by Sebastian Bergmann and contributors.
Runtime: PHP 8.1.22
Configuration: /home/fourze/app/testing-lab/laravel-10/belajar-laravel-8-testing-crud-feature/phpunit.xml
.. 2 / 2 (100%)
Time: 00:00.078, Memory: 26.00 MB
There was 1 PHPUnit test runner deprecation:
1) Your XML configuration validates against a deprecated schema. Migrate your XML configuration using "--migrate-configuration"!
OK, but there were issues!
Tests: 2, Assertions: 4, Deprecations: 1.
Sekarang kita coba sesuaikan konfigurasi phpunit dengan run command.
vendor/bin/phpunit --migrate-configuration
Output di terminal menampilkan prosesnya.
$ vendor/bin/phpunit --migrate-configuration
PHPUnit 10.3.2 by Sebastian Bergmann and contributors.
Created backup: /home/fourze/app/testing-lab/laravel-10/belajar-laravel-8-testing-crud-feature/phpunit.xml.bak
Migrated configuration: /home/fourze/app/testing-lab/laravel-10/belajar-laravel-8-testing-crud-feature/phpunit.xml
Sekarang kita coba run kembali phpunit.
vendor/bin/phpunit
Output:
vendor/bin/phpunit
PHPUnit 10.3.2 by Sebastian Bergmann and contributors.
Runtime: PHP 8.1.22
Configuration: /home/fourze/app/testing-lab/laravel-10/belajar-laravel-8-testing-crud-feature/phpunit.xml
.. 2 / 2 (100%)
Time: 00:00.076, Memory: 26.00 MB
OK (2 tests, 4 assertions)
Ya, tidak ada error ketika kita run testing. Ini tandanya prosees upgrade dari laravel versi 9 ke laravel versi 10 berhasil.
Tentu untuk memastikan bisa run project di browser secara langsung. Run command.
php artisan serve
Lalu buka http://127.0.0.1:8000/post
di browser. Apabila tidak terdapat error, ini tandanya proses upgrade berhasil.
Sekarang kita cek versi laravel menggunakan command di bawah ini.
php artisan --version
Output:
$ php artisan --version
Laravel Framework 10.19.0
Pada postingan kali ini kita sudah mencoba untuk melakukan proses upgrade versi framework laravel. Dimulai dari upgrade laravel versi 8 ke versi 9, lalu dilanjutkan dengan upgrade laravel versi 9 ke versi 10. Sesuai dengan goal yang kita tetapkan di awal percobaan dan proses upgrade berhasil, testing menggunakan phpunit pun berhasil.
© 2024 qadrLabs . All rights reserved. 000515268