초록 기린

แนะนำเครื่องมือ Rector สำหรับอัปเกรดเวอร์ชัน PHP

สร้าง: 2024-03-24

สร้าง: 2024-03-24 23:17

ขณะที่กำลังดูเว็บไซต์ของ Gnuboard5 ซึ่งเป็น PHP CMS ของเกาหลี ฉันพบว่ามีโพสต์จำนวนหนึ่งที่ร้องเรียนเกี่ยวกับปัญหาที่เกิดขึ้นหลังจากอัปเกรดเวอร์ชัน PHP ซึ่งเป็นเพราะไวยากรณ์และเวอร์ชันที่เลิกสนับสนุนแล้ว

ดังนั้นฉันจึงค้นหาต่อและ...

พบว่าใน Reddit มีคนแนะนำเครื่องมือชื่อ Rector ที่สามารถช่วยในการโยกย้าย ดังนั้นฉันจึงขอแนะนำวิธีการใช้งาน



หลังจากที่ PHP 7.0 เปิดตัวในปี 2015 ก็มีเครื่องมือสำหรับการโยกย้าย PHP ออกมา เช่น php cs-fixer และ Rector เป็นต้น

โดยส่วนตัวแล้วคิดว่า Rector ใช้งานง่ายกว่า

Rector (ออกเสียงว่า เร็กเตอร์) เป็นเครื่องมือที่สามารถตรวจสอบไวยากรณ์และแก้ไขโค้ด PHP ตั้งแต่เวอร์ชัน 5.3 ถึง 8.2 ให้ตรงตามเวอร์ชันที่ต้องการ


อย่างไรก็ตาม ข้อเสียของ Rector คือเป็นเครื่องมือวิเคราะห์แบบ Static Analyzer ดังนั้นจึงไม่สามารถตรวจจับข้อผิดพลาดที่เกิดขึ้นในขณะรันไทม์ได้



Rector ต้องการให้ Composer ซึ่งเป็นเครื่องมือจัดการแพ็กเกจของ PHP ติดตั้งอยู่ก่อน

1. ติดตั้ง Composer

2. ติดตั้ง Rector ในโฟลเดอร์โครงการปัจจุบัน

3. สร้างไฟล์กำหนดค่า rector.php



การตั้งค่า rector.php

เพื่อให้ง่ายต่อการทำความเข้าใจ ฉันจะตั้งสถานการณ์จำลองขึ้นมา

สมมติว่าโค้ดต้นฉบับเป็นโค้ด PHP 5.3 และเป้าหมายในการอัปเกรดคือ PHP 7.4

เวอร์ชัน Rector ที่ใช้คือ 1.0.3


RectorConfig::config() ใช้สำหรับกำหนดโฟลเดอร์ของโค้ดต้นฉบับและการตั้งค่าเวอร์ชัน PHP

ฟังก์ชัน withPhpSets ใช้สำหรับกำหนดฟังก์ชัน PHP ที่ต้องการอัปเกรด


ถ้าเวอร์ชัน PHP ที่ใช้รัน Rector เป็น PHP 8.0


สามารถตั้งค่า php เวอร์ชัน: true ได้แบบนี้

แต่ถ้าเวอร์ชัน PHP ที่รันอยู่เป็น PHP 7.4 หรือต่ำกว่า


จะไม่สามารถใช้ไวยากรณ์ของพารามิเตอร์ที่มีชื่อในฟังก์ชันได้ ดังนั้นจึงต้องตั้งค่า true ตามเวอร์ชันที่ต้องการ

Rector รองรับ PHP 8.3 ดังนั้นหากต้องการกำหนด PHP 7.4 ให้ทำดังนี้


->withPaths([
__DIR__ , // ไดเร็กทอรีที่ไฟล์ rector.php อยู่
])



ใช้สำหรับกำหนดกฎและโฟลเดอร์ที่ไม่ต้องการให้ใช้

โฟลเดอร์ใช้รูปแบบ '/ชื่อโฟลเดอร์/*'

ไฟล์ใช้รูปแบบ 'ชื่อไฟล์'


กฎที่เพิ่มเข้ามาคือ "SensitiveConstantNameRector"

Rector จะไม่สามารถตรวจจับ undefined index ในอาร์เรย์ PHP ได้ และจะตีความว่าเป็นค่าคงที่ ทำให้เกิดการแก้ไขที่ผิดพลาด ดังนั้นจึงต้องเพิ่มกฎการยกเว้นนี้เข้าไป

กฎเหล่านี้เป็นเรื่องของรูปแบบโค้ด ดังนั้นจึงยกเว้นไว้


วิธีการรัน

มี 2 วิธี

คำสั่งนี้จะแสดงโค้ดที่จะต้องแก้ไขในคอนโซลเท่านั้น

เนื่องจากโค้ดต้นฉบับอาจมีจำนวนมาก จึงจำเป็นต้องกำหนดหน่วยความจำที่ใช้ โดยใช้ตัวเลือก --memory-limit=2G


คำสั่งนี้จะแก้ไขโค้ดต้นฉบับโดยตรง

เนื่องจากมีตัวเลือกมากมาย อาจมีตัวเลือกที่ไม่ต้องการใช้งานอยู่ ดังนั้นจึงควรตรวจสอบการเปลี่ยนแปลงโดยใช้ Git



ความคิดเห็น0

29 พ.ย. 2567 ข่าวล่าช้า: สมัคร Replit แบบชำระเงิน / นิสัยการพัฒนาซอฟต์แวร์ที่ดีบทความบล็อกที่เขียนเมื่อวันที่ 29 พฤศจิกายน พ.ศ. 2567 นี้จะแบ่งปันรีวิวการสมัครสมาชิกแบบชำระเงินของ Replit และแนะนำนิสัยการพัฒนาซอฟต์แวร์ที่ดี 10 ประการ ครอบคลุมกลยุทธ์การเขียนโค้ดและการปรับโครงสร้างที่มีประสิทธิภาพ รวมถึงความสำคัญของการทดสอบ
Charles Lee
Charles Lee
Charles Lee
Charles Lee

November 29, 2024

[บันทึกการสร้างเว็บไซต์หลายภาษา - วันที่ 33] การตั้งค่าเว็บไซต์เสร็จสมบูรณ์!สร้างเว็บไซต์หลายภาษาเสร็จสมบูรณ์ภายใน 33 วัน! แก้ปัญหาความล่าช้าในการแปลโดยการเปลี่ยนตำแหน่งเซิร์ฟเวอร์และตั้งค่าทุกอย่างเสร็จสมบูรณ์แล้ว ควรส่ง sitemap หลังจากตั้งค่าทุกอย่างเสร็จเรียบร้อยแล้ว
aghkuh1
aghkuh1
aghkuh1
aghkuh1

January 29, 2025

[python]พื้นฐาน Python 1 ทำความรู้จักกับโมดูล Pythonเรียนรู้พื้นฐาน Python ผ่านบทเรียนนี้ คุณจะได้เรียนรู้เกี่ยวกับแนวคิดและวิธีการใช้โมดูล Python รวมถึงวิธีสร้างและใช้งานโมดูลด้วยตัวเอง
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자

March 27, 2024

ประสบการณ์การมีส่วนร่วมโอเพนซอร์สบทความนี้แบ่งปันประสบการณ์การมีส่วนร่วมโอเพนซอร์ส ช่วยสร้างแรงบันดาลใจให้เอาชนะความกลัวและก้าวแรก เริ่มต้นจากการปรับปรุงเล็กๆ น้อยๆ แล้วค่อยๆ สร้างความมั่นใจและเติบโต
seungwon
seungwon
seungwon
seungwon

May 3, 2025