Với việc phát hành Symfony Framework 4. 1 rất nhiều cập nhật thú vị có sẵn. Dưới đây là tổng quan về cách cập nhật Symfony 4 của bạn. 0 dự án cho Symfony 4. 1. Nếu bạn cần nâng cấp từ phiên bản chính khác với phiên bản 4, vui lòng tham khảo hướng dẫn này
Nâng cấp từ Symfony 2. 6 lên phiên bản mới nhất sẽ là một nhiệm vụ hơi tẻ nhạt. Đã lâu rồi kể từ Symfony 2. 6 đã được giới thiệu, vì vậy sẽ có rất nhiều thay đổi trong phiên bản mới nhất
Chúng tôi sẽ đề cập đến những thay đổi lớn trong blog này. Thay vì nâng cấp trực tiếp lên phiên bản Symfony LTS, đầu tiên chúng ta sẽ nâng cấp lên Symfony 2. 8 rồi 3. 4, sau đó là Bản giao hưởng 4. 4
Tất nhiên, việc này sẽ mất một lúc, nhưng đây là cách tốt nhất để chuyển sang phiên bản mới nhất. Mặc dù Symfony cố gắng hết sức để tránh phá vỡ khả năng tương thích ngược, nhưng có một số điều cần phải thay đổi. Vì vậy, không cần thêm thời gian, hãy bắt đầu
Nâng cấp lên Symfony 2. 8
Chuyển đến nhà soạn nhạc. json và sửa đổi,
“require”: { “symfony/symfony”: “2.8.*” }
Mở terminal của bạn và chạy lệnh,
composer update symfony/symfony --with-dependencies
Điều này cũng sẽ cập nhật các phụ thuộc của bạn
Bạn có thể kiểm tra phiên bản Symfony bằng app/console –version
Bây giờ hãy xem liệu dự án của chúng ta có còn hoạt động không. Chà, vì không có nhiều thay đổi ngoại trừ một thay đổi lớn, tôi. e, trường ChoiceType
- Quy ước tùy chọn “lựa chọn” đã được thay đổi từ giá trị => nhãn thành nhãn => giá trị
Đối với những thay đổi nhỏ khác, bạn có thể tham khảo https. //github. com/knpuniversity/blog/blob/master/upgrading-symfony-2. 7. md, nó bao gồm gần như tất cả các thay đổi
Nếu mọi thứ đều ổn, đã đến lúc chuyển sang Symfony 3, nhưng trước đó, chúng ta nên loại bỏ những lời phản đối trong mã
Nâng cấp lên Symfony 3
Khấu hao
- Tên loại không được dùng nữa và bây giờ bạn nên sử dụng Tên lớp đủ điều kiện trong biểu mẫu Symfony.
Trước đây.$form = $this->createFormBuilder[] ->add['name', 'text'] ->add['age', 'integer'] ->getForm[];
Bây giờ, bạn nên thay đổi nó thành
use Symfony\Component\Form\Extension\Core\Type\IntegerType; use Symfony\Component\Form\Extension\Core\Type\TextType; $form = $this->createFormBuilder[] ->add['name', TextType::class] ->add['age', IntegerType::class] ->getForm[];
Thông tin thêm về Tên loại có thể được tìm thấy trong hướng dẫn nâng cấp. https. //github. com/symfony/symfony/blob/2. 8/NÂNG CẤP-2. 8. md
- Một thay đổi khác là FormTypeInterface. getName[] được thay thế bằng FormTypeInterface. getBlockPrefix[]
- Chuyển thể hiện loại vào Biểu mẫu. thêm [], FormBuilder. add[] và FormFactory. các phương thức tạo*[] không được dùng nữa và sẽ không được hỗ trợ nữa trong Symfony 3. 0. Thay vào đó, hãy chuyển tên lớp đủ điều kiện của loại.
Trước đây.$form = $this->createForm[new MyType[]];
Sau
$form = $this->createForm[MyType::class];
Thực hiện các thay đổi khác trong mã theo hướng dẫn nâng cấp trước khi chuyển sang Symfony 3 vì tất cả các lỗi không dùng nữa đều bị xóa trong phiên bản này. Vì vậy, nó thực sự quan trọng
khoai mỡ
- Sử dụng dấu hai chấm trong giá trị ánh xạ không được trích dẫn dẫn đến ParseException
- Bắt đầu một chuỗi không được trích dẫn bằng @, `,. hoặc > dẫn đến ParseException
Tham khảo hướng dẫn nâng cấp này để biết thêm chi tiết. https. //github. com/symfony/symfony/blob/3. 0/NÂNG CẤP-3. 0. md
Di chuyển đến cấu trúc thư mục Symfony 3
Thư mục Var
- Thư mục var hiện chứa các tệp nhật ký và bộ đệm thay vì thư mục ứng dụng
- Tạo thư mục trong thư mục gốc và di chuyển các tệp trong đó
- mkdir var
- Ứng dụng mv/bộ đệm var/
- Ứng dụng mv/nhật ký var/
- Để cập nhật dự án và các thay đổi sẽ diễn ra, hãy thực hiện các thay đổi sau trong app/Appkernel. php
public function getRootDir[] { return __DIR__; } public function getCacheDir[] { return dirname[__DIR__].'/var/cache/'.$this->environment; } public function getLogDir[] { return dirname[__DIR__].'/var/logs'; }
- Bây giờ, chúng ta cần cập nhật đường dẫn trong trình soạn thảo. json nữa
Trong trình soạn nhạc. json, bên dưới thuộc tính bổ sung thêm các dòng sau- “symfony-var-dir”. "var",
- “symfony-bin-dir”. "thùng rác"
- Di chuyển bảng điều khiển vào thùng
- Ứng dụng Mv/thùng bảng điều khiển/bảng điều khiển
- Mở nó và thay thế require_once __DIR__. ’/bootstrap. php. bộ đệm'; . ’/. /ứng dụng/tự động tải. php’;
Bây giờ cho bước tiến lớn tiếp theo
Thực hiện các thay đổi trong nhà soạn nhạc. tập tin json,
“require”: { “symfony/symfony”: “3.4.*” }
Chúng tôi đang chuyển sang phiên bản 3. 4 vì đây là phiên bản hỗ trợ dài hạn và được khuyến nghị
Trong khi chạy lệnh “cập nhật nhà soạn nhạc”, có thể xảy ra một số lỗi khi nâng cấp lên phiên bản này do các yếu tố phụ thuộc
Nó có thể là một ý tưởng tốt để điều hướng đến https. // người đóng gói. org/ và tìm các phiên bản tiêu chuẩn của các gói và thực hiện các thay đổi trong trình soạn thảo. json tương ứng
Ví dụ. Bạn có thể gặp lỗi “sensio/distribution-bundle yêu cầu Symfony/ process ở phiên bản 2. 2”, Vì vậy, tất cả những gì bạn cần làm là cài đặt Symfony/ process bundle trước và sau đó chạy lại “ Composer require sensio/distribution-bundle ”, lần này nó sẽ hoạt động bình thường
Bạn cũng sẽ cần phải xử lý mọi lỗi như thế này đối với các gói khác, lúc đầu có thể hơi khó chịu nhưng sau khi xử lý xong bạn sẽ cảm thấy nhẹ nhõm
- Cuối cùng chạy, composer update symfony/symfony –with-dependencies
- Ngoài ra, hãy cân nhắc nâng cấp phiên bản PHP vì hầu hết các gói không hỗ trợ các phiên bản bên dưới PHP 7. 0
Nâng cấp lên Symfony 4
Sự khác biệt duy nhất giữa Symfony 3. 4 và Symfony 4 khác với cấu trúc thư mục là tất cả các lỗi không dùng nữa đều bị xóa trong Symfony 4
Dưới đây là sơ lược về sự khác biệt giữa cấu trúc thư mục của Symfony 3 và Symfony 4
Thông tin thêm có thể được tìm thấy trong hướng dẫn nâng cấp ở đây. https. //github. com/symfony/symfony/blob/4. 0/NÂNG CẤP-4. 0. md
Bạn có thể chọn chuyển sang cấu trúc thư mục mới hoặc bạn có thể ở lại với cấu trúc hiện tại
Mặc dù một lợi thế của việc nâng cấp lên cấu trúc thư mục Symfony 4 là bạn sẽ có thể sử dụng các tính năng của Symfony flex. Chúng tôi sẽ không đi sâu vào chi tiết về Symfony flex trong phần này vì mối quan tâm chính của chúng tôi là nâng cấp dự án Symfony của chúng tôi lên phiên bản Hỗ trợ dài hạn mới nhất, tôi. e, Symphony 4. 4
Khấu hao
- hạt nhân. loadClassCache[] không được dùng nữa kể từ phiên bản 3. 3. Chuyển đến trang web/ứng dụng. php, bạn sẽ thấy thông báo không dùng nữa ở đó. Xóa dòng $kernel->loadClassCache[]
- Thành phần ClassLoader đã bị xóa. Sử dụng Composer để thay thế
Thực hiện các thay đổi trong Composer của bạn. json để nâng cấp lên phiên bản Symfony 4 LTS
________số 8Tất nhiên, bạn sẽ cần thực hiện các thay đổi trong mã và có thể phải xóa hoặc thay thế các gói của bên thứ ba để ứng dụng của bạn hoạt động
Bạn sẽ ổn trong một thời gian vì phiên bản này có hỗ trợ bảo mật cho đến tháng 11 năm 2023, nhưng kể từ khi Symfony 5 được phát hành, hãy nói về một số tính năng mới của nó
Symphony 5. 0 tính năng
- Chuỗi, để quản lý chuỗi hướng đối tượng với hệ thống đơn vị trừu tượng
- Trình thông báo, để gửi thông báo qua một hoặc nhiều kênh [email, SMS, …]
Như đã nêu trước đó, việc nâng cấp Symfony lên phiên bản LTS mới nhất sẽ mất một chút thời gian nhưng mặt khác, bạn sẽ học được nhiều điều mới hữu ích