- GitHub - rectorphp/rector: Instant Upgrades and Automated Refactoring of any PHP 5.3+ code
- Instant Upgrades and Automated Refactoring of any PHP 5.3+ code - rectorphp/rector
Bài viết được dịch bởi AI.
Bài viết được tóm tắt bởi durumis AI
- Giới thiệu cách sử dụng công cụ Rector để nâng cấp mã PHP 5.3 lên PHP 7.4.
- Sau khi cài đặt Composer, cài đặt Rector vào dự án và sử dụng tệp cấu hình rector.php để chỉ định mã cần nâng cấp và phiên bản PHP.
- Thiết lập và thực thi các quy tắc sửa đổi để tự động sửa đổi mã và quản lý các thay đổi bằng Git để đảm bảo quá trình nâng cấp an toàn.
Khi xem trang web của Gnuboard5, một CMS PHP của Hàn Quốc, tôi thấy một số bài viết bày tỏ sự khó khăn do cú pháp và phiên bản bị ngừng hỗ trợ sau khi nâng cấp phiên bản PHP.
Vì vậy, tôi đã tìm kiếm và...
trên Reddit, tôi thấy rằng có thể sử dụng công cụ Rector để hỗ trợ quá trình di chuyển, vì vậy tôi sẽ giới thiệu cách sử dụng nó.
Sau khi PHP 7.0 được phát hành vào năm 2015, các công cụ di chuyển PHP đã xuất hiện, chẳng hạn như php cs-fixer và rector.
Tôi thấy rằng rector dễ sử dụng hơn.
Rector (phát âm: Rector) kiểm tra cú pháp và sửa đổi mã PHP từ phiên bản 5.3 đến 8.2 cho phù hợp với phiên bản mong muốn.
Một điểm đáng tiếc là Rector là một trình phân tích tĩnh, vì vậy nó không thể phát hiện ra các lỗi xảy ra trong thời gian chạy.
Rector yêu cầu Composer, công cụ quản lý gói PHP, được cài đặt.
1. Cài đặt Composer.
2. Cài đặt Rector vào thư mục dự án hiện tại.
3. Tạo tệp cấu hình rector.php.
Cấu hình rector.php
Để dễ hiểu hơn, tôi sẽ đặt ra một tình huống.
Giả sử mã nguồn đích là mã PHP 5.3 và phiên bản mục tiêu nâng cấp là PHP 7.4.
Phiên bản Rector là 1.0.3.
RectorConfig::config() thiết lập thư mục mã nguồn và phiên bản PHP.
Hàm withPhpSets thiết lập các hàm PHP cần nâng cấp.
Nếu phiên bản PHP đang chạy là PHP 8.0
thì bạn có thể thiết lập phiên bản PHP: true như vậy.
Tuy nhiên, nếu phiên bản PHP đang chạy là PHP 7.4 trở xuống
bạn không thể sử dụng cú pháp tham số có tên trong hàm, vì vậy bạn phải thiết lập true cho phiên bản mong muốn.
Rector hỗ trợ PHP 8.3, vì vậy để chỉ định PHP 7.4, bạn làm như sau:
->withPaths([
__DIR__ , // Thư mục chứa rector.php.
])
Chỉ định các quy tắc và thư mục không muốn áp dụng.
Thư mục được chỉ định là '/tên_thư_mục/*'.
Tệp được chỉ định là 'tên_tệp'.
Tôi đã thêm quy tắc "SensitiveConstantNameRector".
Rector không thể tìm thấy chỉ mục chưa xác định trong mảng PHP và chỉ nhận dạng nó là hằng số, dẫn đến việc nó cố gắng sửa đổi sai. Vì vậy, tôi đã thêm nó vào danh sách quy tắc loại trừ.
Các quy tắc này liên quan đến kiểu mã, vì vậy tôi đã loại trừ chúng.
Thực hiện
Có hai cách.
Lệnh này chỉ xuất ra bảng điều khiển các mã cần thay đổi.
Vì càng nhiều mã nguồn thì càng cần nhiều RAM, nên bạn phải chỉ định dung lượng RAM sử dụng bằng tùy chọn --memory-limit=2G.
Lệnh này sửa đổi mã nguồn trực tiếp.
Vì có rất nhiều tùy chọn, nên có thể có những tùy chọn không mong muốn được áp dụng, vì vậy bạn phải kiểm tra bằng Git.