translation

AI가 번역한 다른 언어 보기

초록 기린

PHP 버전 업그레이드 도구 rector 소개

  • 작성 언어: 한국어
  • 기준국가: 모든 국가country-flag
  • IT
프로필 이미지

durumis AI가 요약한 글

  • PHP 버전 업그레이드 도구인 Rector를 활용하여 PHP 5.3 코드를 PHP 7.4로 마이그레이션하는 방법을 소개합니다.
  • Composer 설치 후 Rector를 프로젝트에 설치하고 rector.php 설정 파일을 통해 업그레이드 대상 코드와 PHP 버전을 지정합니다.
  • 수정 규칙 설정 및 실행을 통해 코드를 자동 수정하고, 변경 사항은 Git으로 관리하여 안전하게 업그레이드를 진행합니다.

한국의 php cms 인 그누보드5 사이트를 보다가 php 버전 업그레이드 후 지원중단된 문법과 버전으로

어려움을 호소하는 글들이 몇개 있었습니다. 그래서 찾다가..

reddit 에 가보니 rector 라는 툴을 쓰면 마이그레이션을 도와준다고 해서 사용법을 소개합니다.



PHP 7.0 이 출시된 2015년 이후 php 마이그레이션 툴이 나왔는데요 php cs-fixer , rector 등등

rector 가 좀더 사용이 편리한거 같습니다.

rector (발음: 렉터) 는 PHP 5.3 ~ 8.2 의 코드를 원하는 버전에 맞게 문법검사를 하고 고쳐줍니다.


한가지 아쉬운건 rector 는 정적분석기라서 런타임에 일어나는 오류들은 감지하지 못합니다.



Rector 는 php 패키지 관리도구인 컴포저가 설치되어있어야합니다.

1. 컴포저를 설치합니다.

2. 현재 프로젝트 폴더에 rector 를 설치합니다.

3. 설정파일인 rector.php 를 만듭니다.



rector.php 설정

이해를 돕기위해 상황을 정하겠습니다.

대상 소스코드는 php5.3 코드이고 업그레이드 목표버전은 php 7.4 이라고 가정하고 진행합니다.

Rector 버전은 1.0.3 입니다.


RectorConfig::config() 는 소스코드 폴더, PHP 버전 설정을 합니다.

withPhpSets 함수는 업그레이드 하려는 PHP 함수를 설정합니다.


현재 rector 를 실행하는 php 버전이 php 8.0 인경우


이렇게 php버전 : true 할수있습니다.

그러나 실행중인 PHP 버전이 php 7.4 이하인경우


함수에 이름있는 파라미터 문법을 쓸 수없으므로 원하는 버전이 나올때 true 를 설정해야합니다.

rector 는 php 8.3 을 지원하므로 php 74 를 지정하려면 아래와 같습니다.


->withPaths([
__DIR__ , // rector.php 가 있는 디렉토리입니다.
])



적용하고 싶지않은 규칙과 폴더를 지정합니다.

폴더는 '/폴더이름/*'

파일은 '파일이름' 입니다.


규칙은 "SensitiveConstantNameRector" 를 추가했는데요

rector 는 PHP 배열에서 undefined index 가 있을 때 이것을 찾지 못하고 상수로만 인식해서 엉뚱하게 바꾸려고 합니다. 그래서 제외 규칙에 추가해줍니다.

이 규칙들은 코드스타일이기 때문에 제외합니다.


실행 하기

두가지가 있습니다.

이 명령어는 변경해야할 코드들을 콘솔에 출력하기만 합니다.

소스 코드가 많을수록 램이 많이 필요하기때문에 --memory-limit=2G 라는 옵션으로 사용램을 지정하셔야됩니다.


이 명령어는 소스코드를 바로 수정합니다.

옵션이 워낙 많아서 원하지 않는 옵션이 적용되어 있을 수 있으므로 git 으로 확인을 해야합니다.



[php]우분투에 Codeigniter 4 셋팅하기우분투에서 CodeIgniter 4 개발 환경을 구축하는 방법을 소개하며, Apache, PHP 익스텐션 설치 및 설정 과정을 상세히 설명합니다.
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자

2024년 3월 27일

[python]파이썬 기초1 파이썬 모듈 알아보기파이썬 기초 강의로 파이썬 모듈의 개념과 사용법을 배우고, 직접 모듈을 만들어 사용하는 방법을 알아볼 수 있습니다.
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자

2024년 3월 27일

[이펙티브 자바] 아이템 6. 불필요한 객체 생성을 피하라불필요한 객체 생성은 메모리 낭비를 초래하므로, 문자열이나 Boolean과 같은 객체는 리터럴이나 정적 팩터리 메서드를 사용하는 것이 좋습니다.
제이온
제이온
제이온
제이온

2024년 4월 28일

글 작성과 관련한 FAQ 모음듀라미스 AI 글쓰기 기능 관련 자주 묻는 질문과 답변을 모아놓았습니다. 줄바꿈, 글 색상 변경, 캡션, AI 미리보기 등 다양한 기능에 대한 궁금증을 해소해보세요.
durumis official blog
durumis official blog
durumis official blog
durumis official blog

2024년 1월 25일

[비전공, 개발자로 살아남기] 7. 신업 취업시 도움이 되는 것과 안되는 것비전공자가 개발자로 취업할 때, 기술 블로그는 효율성이 떨어지지만, Git 활용 및 정보처리기사 자격증 취득은 도움이 됩니다.
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자

2024년 3월 29일

Gemini Code Assist for VS Code 오류 해결하기VS Code의 Gemini Code Assist 오류 발생 시, 이전 버전(v2.14.0)으로 다운그레이드하여 해결할 수 있습니다.
해리슨 블로그
해리슨 블로그
해리슨 블로그
해리슨 블로그

2024년 7월 26일