PHP 개발. Symfony 콘솔 컴포넌트 - 팁과 요령
이 문서는 심포니 콘솔 개발에 대한 가장 유용하고 검색하기 쉬운 팁과 요령을 보여드리기 위해 작성되었습니다.
프로젝트를 진행하는 과정에서 저지른 실수에 대한 기사는 여러 번 작성되었지만, 프로젝트 요구 사항을 살펴보고 선택한 기술에 따른 위험을 관리하는 경우는 드뭅니다.
PHP는 다른 언어와 마찬가지로 몇 가지 단점이 있습니다. IT 프로젝트 어디 PHP 가 주요 언어입니다.
아래에서 그 목록과 이를 방지하는 팁을 정리해 보았습니다.
PHP 는 진입 장벽이 매우 낮기 때문에 '쉬운 언어'로 간주됩니다. 그 결과 코딩 표준과 다양한 외부 라이브러리에서 글로벌 인터페이스가 구현되는 방식에 큰 격차가 생겼습니다. 질서를 잡기 위한 노력의 일환으로 일련의 표준이 도입되었습니다. 여기에는 구현 개발자가 표준에서 요구하는 일련의 제약 조건을 충족할 수 있는 일련의 방법이 설명되어 있습니다. 간단한 예는 다음과 같습니다. 이벤트 디스패처:
리스너 - 리스너는 모든 PHP 호출러블에 이벤트가 전달되기를 기대합니다. 0개 이상의 리스너에 동일한 이벤트가 전달될 수 있습니다. 리스너는 원할 경우 다른 비동기 동작을 큐에 넣을 수도 있습니다.
이 표준을 사용하면 PSR 호환 명명법을 사용하는 모든 개발자는 다음과 쉽게 소통할 수 있습니다. 코드 다른 개발자와 함께합니다.
예를 들어 다음을 사용하여 이러한 표준을 실천에 옮깁니다. PHP 올바른 방법 글로벌 PSR 인터페이스를 지원하는 가이드라인 및 라이브러리를 통해 다음을 수행할 수 있습니다. PHP 개발자 기능, 아키텍처 및 인프라 요구 사항의 변화에 더 빠르게 적응할 수 있습니다.
코드베이스 관리자는 항상 안정적이고 검증된 외부 라이브러리 버전을 사용해야 하며, 커스텀 기반 솔루션을 사용해야 하는 경우 PHP PSR을 사용하여 구현해야 한다는 점을 잊지 마세요.
사용 가능한 모든 표준 목록은 기본 웹사이트에서 확인할 수 있습니다. PHP-FIG. 실용적인 설명이 포함된 확장 표준은 다음에서 다양한 형식으로 제공됩니다. PHP 올바른 방법 홈페이지.
PHP-FIG 표준을 준수하는 최고의 라이브러리는 다음 목록에 나와 있습니다. PHP 리그 웹사이트.
종속성 관리자를 사용하는 프로젝트에서 작곡가 오랜 기간 동안 지원 및 유지 관리를 한 후 종종 상황이 발생합니다. 제품 프로덕션 환경에서는 전체 아키텍처를 재구축하지 않고 기능 변경을 구현해야 할 필요가 있습니다. 대부분의 경우 프로젝트는 프로그래머가 맡게 되며, 프로그래머의 임무는 로컬 개발 환경을 시작하고 티켓 작업을 시작하는 것입니다. 로컬 개발 환경의 composer.lock
파일을 사용하면 개발자는 프로젝트를 프로덕션 환경에 있던 상태로 복원할 수 있지만, 프로젝트를 변경할 때 composer.json
파일을 추가하면 오류가 연쇄적으로 발생하여 새 라이브러리의 실제 구현 시간이 늘어납니다. 팀 멤버와 솔루션 개발 시점에 대한 정보를 제공합니다.
애플리케이션이 안정화되면 코드 관리자는 라이브러리의 버전을 composer.json
파일을 만들고 향후 필요한 경우 버전을 업그레이드하는 방법을 설명하는 명확한 절차를 작성하세요.
또한 사용되는 라이브러리의 보안 상태를 확인하고 보안 업데이트 제공 프로세스를 자동화하는 메커니즘을 실행하는 것도 고려해 보세요.
다음과 같은 무료 도구 사용 Dependabot를 사용하면 종속 라이브러리에 대해 일관되고 관리하기 쉬운 버전 관리 인프라를 유지하고 애플리케이션에 대한 보안을 보장할 수 있습니다.
> 그냥 CRUD일 뿐인데 왜 귀찮게 하나요?
> 바로 그런 라이브러리가 있습니다!
에서 PHP 도메인에서 제품 비즈니스 로직을 구현할 때 망각의 소용돌이에 빠지기 쉽습니다. 수년 동안 [데이터 모델 관리를 위한 관리 패널 생성](https://backpackforlaravel.com/), [구글 애널리틱스와 유사한 뷰 생성](https://github.com/Kunstmaan/KunstmaanDashboardBundle), [PHP의 비동기 문제 해결](https://laravel.com/docs/9.x/octane) 등을 명령줄 쿼리 한 번으로 해결하려는 프로젝트가 수백 개에 달했습니다.
PHP 세계는 99.9%의 시간 동안 작동하는 기성품 구현으로 가득합니다.
이 0.1%는 비즈니스 로직이 사용되는 라이브러리의 기능적 한계와 충돌하는 지점입니다.
프로젝트가 끝날 때 가장 구현하기 어려운 것은 이러한 소위 '던져 넣기'입니다.
제품의 비즈니스 영역을 제대로 이해하지 못하면 오버 엔지니어링과 언더 엔지니어링 사이에서 황금 비율을 찾을 수 없습니다.
시작하여 개발 팀 멤버를 제품 단계 초기에 참여시키고 제품 소유자와 협력하면서 선제적으로 대응하면 장기적인 투자로 작동하지 않는 솔루션을 사용하는 데 따른 위험을 최소화할 수 있습니다.
PHP 가 완벽하지는 않다는 것은 확실합니다. 정적 타이핑, 제네릭 지원 부족, 구식 메서드에 대한 지속적인 지원 등의 단점은 여전히 프로그래머들 사이에서 농담의 소재가 되고 있습니다. 하지만 한동안은 PHP 개발자 와 같은 강력한 도구가 점점 더 많이 제공되고 있습니다. PHPStan, Xdebug, PHP-CS-Fixer 를 사용하여 일관성과 정적 타이핑을 유지함으로써 많은 버그를 방지할 수 있습니다. 그럼에도 불구하고 테스트에 너무 적은 관심을 기울이고 있으며, 테스트를 올바르게 구현하면 다음과 같은 형태로 빠른 투자 수익을 얻을 수 있습니다.
- 회귀 오류 감소
- 제품 기능에 대한 인지도 향상
- 개발자의 코드 주인의식 향상
테스트 비용을 줄이지 마세요. 간단한 Behat 스크립트를 작성하는 것은 그리 어렵지 않으며, 복잡한 엔드투엔드 테스트를 바로 작성하거나 구현 세부 사항 및 모든 메서드 단위 테스트에 들어갈 필요가 없습니다.
자연스러운 도메인 언어로 설명된 간단한 Behat 테스트는 가장 세심하게 작성된 엔드투엔드 테스트보다 더 가치가 있는 경우가 많습니다.
그리고 PHP 언어 그리고 가장 강력한 두 가지 프레임워크 Laravel 그리고 Symfony 는 현대적이고 기능적이며 가장 중요한 고성능 아키텍처를 만드는 데 완벽하게 적합합니다. 다양한 메시지 대기열 시스템 지원과 더욱 빨라지고 있는 PHP 버전마다 성능이 개선되어 마이크로프레임워크 기반의 마이크로서비스를 쉽게 만들 수 있게 되었습니다. 하지만 대부분의 경우 여전히 모놀리식 시스템에 의존하고 있습니다. 이것이 잘못된 것은 아니지만, 이러한 시스템의 개발을 고려할 때는 도메인 경계에 세심한 주의를 기울이고 새로운 솔루션과 시스템의 이전 부분 간의 인터페이스 지점을 결정해야 합니다.
개발할 때 PHP 웹사이트를 통해 현재 솔루션을 자세히 살펴보고, 데이터 통신을 위한 글로벌 인터페이스를 만들고, 최신 기술과 관행을 사용하여 새로운 기능을 구현하는 것이 좋습니다. 실제로 가장 많이 사용되는 솔루션 중 하나는 다음과 같습니다. 스트랭글러 패턴.