update Laravel from 5.8 to 6x and 7x
Các bạn cho mình hỏi, mình đang có 1 source chạy Laravel 5.8 muốn up lên 6x rồi 7x thì tìm hiểu trên mạng có tài liệu nói chỉnh sửa file composer.json:
"laravel/framework": "^6.0",
chạy lệnh composer update
ngoài ra có một số tài liệu nói cần update các dependencies lên phiên bản mới hơn. Theo mình đọc tài liệu trên trang Laravel thì sẽ có một số thứ phiên bản mới sẽ thay đổi cần làm bằng tay, nói chung là mình mới tiếp cận với Laravel nên chưa nắm vững.
Bạn nào có kinh nghiệm chia sẻ giúp mình nhé. Thanks
2 CÂU TRẢ LỜI
Đúng rồi đó bạn, bạn làm từng bước upgrade lên từng version Laravel một. Đầu tiên, bạn chỉnh sửa trực tiếp file composer.json
như trên bạn chia sẻ ở trên, trong guideline của Laravel cũng nói vậy đó. Ngoài laravel/framework
nếu bạn biết package khác cần phải sửa version thì mới tương thích với Laravel ver mới thì bạn có thể sửa luôn một thể hoặc không thì bạn sửa mỗi laravel/framework
thôi cũng được.
Tiếp theo bạn chạy lệnh composer update
để nó update dependencies, nếu có package không tương thích thì nó sẽ có báo lỗi ra màn hình về việc conflict, bạn chỉ cần quan tâm tên của package nào bị conflict rồi lên repo của package đó coi có version tương thích với Laravel ver mới hay chưa. Nếu có thì bạn tiếp tục sửa version của nó trong file composer.json. Lặp lại quá trình composer update
này cho tới khi không còn conflict dependencies thì dừng và thực hiện tiếp các bước trong guideline của Laravel.
Trường hợp bạn dùng một package mà không tương thích với Laravel version mới thì bạn xem xét chuyển qua package khác thay thế hoặc sửa package giúp họ để support Laravel version mới hoặc là dừng việc upgrade Laravel lại - đợi khi package kia không còn conflict nữa thì tiến hành upgrade.
@longhiryu À quên mất, khi có conflict về dependencies, nếu bạn cần update bản version cho package khác thì bạn cũng nhớ lưu ý check lại code khi sử dụng nó nữa nha. Nếu việc sửa code bạn ước lượng thấy mất quá nhiều time, nhưng chưa upgade xong dependencies thì làm sao ngồi code được. Khi đó bạn cần note lại tên package để sau khi không còn conflict dependencies nữa thì quay lại sửa code nha.
Ngoài ra, mình cũng hay mở file composer.json trên repo laravel/laravel
để xem version những package mặc định của laravel để so sánh. Cả những file config
của laravel mình cũng làm vậy.
Cảm ơn bạn, mình tựa hồ hiểu quy trình rùi, thanks nhìu.
Mình update đến giai đoạn này thì còn 02 cái notice này, bạn có kinh nghiệm xử lý thì giúp mình với
@longhiryu Theo như ảnh trên thì cái package eddieace/php-simple
nó không tuân thủ chuẩn Auto Loading: https://www.php-fig.org/psr/psr-0/
Khi dùng trên composer v2 thì sẽ không autoload được. Cái này chỉ là warning thôi, bạn dùng composer v1.x thì chưa sao đâu.
Cài laravel 7, bê controller view model qua cho dễ. Không thì phải làm thủ công theo docs laravel.
thanks bạn, cũng là một cách hay, cơ mà mình là người tiếp quản, không biết người trước có làm gì ngoài MCV ko nên chưa thử.