백엔드 개발 PHP 튜토리얼 EventPress 파트 1 구축

EventPress 파트 1 구축

Nov 19, 2024 pm 04:53 PM

안녕하세요! 시작하기 전에 참고사항... 오랫동안 글을 쓰지 않았습니다. 나는 오랫동안 그렇게 하겠다고 위협해왔고, 마침내 이것이 다른 어떤 주제보다도 시작하기에 좋은 주제라는 것을 깨달았습니다. 조금 녹슬었지만 계속해서 개선해 나가도록 노력하겠습니다.

Building EventPress  Part 1

EventPress는 아마도 제가 작업하는 가장 큰 작업일 것입니다. 저는 처음부터 참여해 왔으며 지난 10년 동안 3가지 주요 버전을 통해 앱이 기하급수적으로 성장했습니다. 버전 4가 현재 준비 중이며 작업하면서 변경하고 싶은 몇 가지 변경 사항이 있습니다.

먼저, 약간의 역사입니다. EventPress는 HotPress Media 소유이며 고객이 Excel 스프레드시트를 대체할 수 있는 이벤트 회신 관리에 대한 간단한 솔루션을 요청했기 때문에 시작되었습니다. EventPress의 첫 번째 버전은 추악했습니다. 스펙도 없었고, 적절한 계획도 없이 프로젝트를 진행했는데 결국 거대한 스파게티 한 그릇이 나왔습니다. 하지만 그것은 효과가 있었고 남아프리카 최대 규모의 회사 중 하나에 발을 들여놓는 데 도움이 되었습니다.

버전 2는 큰 도약이었습니다. 인터페이스 방식은 크게 바뀌지 않았지만, 기본 프레임워크는 큰 변화를 겪었습니다. EventPress는 Laravel(당시 버전 5)로 이전되었으며, 버전 1의 많은 코드가 버전 2에서 나왔지만 구조는 훨씬 더 좋았고 문제도 훨씬 적었습니다. 그 당시에는 아직 어떤 종류의 테스트 스위트도 없었고 기본적으로 "내 컴퓨터에서 작동"하는 방식으로 테스트했습니다. 좋지 않아요.

Building EventPress  Part 1

버전2 이벤트 지수

버전 3에서는 UI가 완전히 개편되었으며 Tailwind가 선호하는 CSS 프레임워크가 되었습니다. 상당량의 버전 1 코드가 여전히 어두운 구석에 숨겨져 있음에도 불구하고 많은 코드가 변경되었습니다. 버전 3의 큰 변화는 완전히 새로운 배포 시스템이었습니다. 우리는 전환 과정에서 대량 메일 발송에 대해 많은 것을 배웠습니다.

대중이 접하는 UI의 대부분은 버전 2에서 직접 복사한 것입니다. 지금도 참석자들이 보는 것의 대부분은 여전히 ​​버전 2 코드입니다. 대신 버전 3에서는 코드 기반에 훨씬 더 많은 구조를 가져왔습니다. 어떤 논리가 나오기 시작했습니다. 우리는 얇은 컨트롤러를 작성하고 서비스 컨테이너에 크게 의존했습니다. 버전 3은 테스트 스위트를 자랑하는 EventPress의 첫 번째 버전이기도 합니다.

Building EventPress  Part 1

버전3 이벤트 지수

저는 오랫동안 PHP 코드를 작성해 왔지만 독학했습니다. EventPress는 수영 방법에 대한 지시 없이 깊은 바다에 던져진 것과 같았습니다. 그것은 엄청난 학습 곡선이었지만 오늘날의 제가 있게 되었습니다. 다른 개발자의 의견을 거의 반영하지 않고 제가 직접 만들었습니다.

이번에는 EventPress 4 개발 과정을 블로그에 올리려고 합니다. 승인을 구해서가 아니라 이번에는 녹음하고 싶어서요. 그리고 어쩌면 내 솔루션이 다른 솔로 개발자에게 도움이 될 수도 있습니다. 저는 대규모 PHP 애플리케이션을 구축하고 실행하는 방법에 대해 많은 것을 배웠습니다.

EventPress 4는 대대적으로 재작성될 예정입니다. 많은 EventPress 3 코드가 버전 4에 포함되지만 단순히 복사하여 붙여넣기만 하면 되는 것은 아닙니다. 이제 버전 1 이후로 남아 있던 모든 오래된 부분을 마침내 제거해야 할 때라고 생각합니다. 나는 좀 더 강력한 테스트 스위트를 원합니다. 그리고 좀 더 새로운 기술을 활용하고 싶습니다.

이 일을 하면서 최소한 한 달에 한 번은 글을 쓰는 것이 제 계획입니다. 억지로라도 지켜보도록 할게요.

그러니 먼저 전투에 참여하세요...

어디서부터 시작해야 할까요?

EventPress 4에는 새로운 UI가 제공되지 않습니다. 우리는 버전 3의 거의 모든 인터페이스를 사용할 것이며 아마도 여기저기서 몇 가지 사소한 변경 사항만 사용할 것입니다. EventPress의 UI는 Vue 3를 사용하여 구축되었으며 Tailwind와 Inertia는 우리가 선택한 접착제입니다.

EventPress 4는 버전 3의 일대일 기능 복사본이 될 것입니다. 이는 버전 3이 향후 몇 달 동안 발전함에 따라 버전 4도 함께 성장해야 함을 의미합니다. 하지만 지금은 단지 약간의 계획만 있을 뿐입니다.

우선 버전 3에서 여전히 어려움을 겪고 있는 부분을 살펴보고 버전 4에서 이러한 요소를 어떻게 개선할 수 있는지에 대해 몇 가지 메모를 했습니다. 저는 이 버전의 구축에 어떻게 접근하고 싶은지에 대한 아이디어를 구축했습니다. 이벤트프레스. 친숙한 부분도 있고 완전히 새로운 부분도 있습니다.

  • 라라벨 11
  • 뷰 3
  • InertiaJS 2
  • FrankenPHP의 Laravel Octane
  • PHP 8.4
  • MySQL(및 기업 클라이언트용 SQLSRV)
  • 캐디

여기에는 몇 가지 흥미로운 선택 사항이 있다는 것을 알고 있습니다. Octane은 이전에 그런 것을 사용해 본 적이 없기 때문에 우리에게 큰 것입니다. Octane은 PHP 애플리케이션 서버에서 앱을 실행하는 데 도움이 되는 Laravel용 자사 패키지입니다. Swoole, RoadRunner 및 FrankenPHP가 지원됩니다. 우리는 세 가지 옵션을 모두 살펴본 후 FrankenPHP를 선택했습니다. 다른 두 제품보다 최신이지만 정말 뛰어난 성능을 제공합니다. Swoole의 제안에는 동시 작업자가 있습니다. 이는 좋지만 우리가 필요하다고 생각하는 것은 아닙니다. 그러나 딜 브레이커는 Swoole 확장을 설치해야 한다는 것입니다. 이는 기업 고객이 하기를 기대할 수 있는 일이 아닙니다. 저도 FrankenPHP를 사용해본 경험이 있으니 이해가 되네요.

우리는 수년 동안 Nginx를 사용해 왔습니다. 훌륭하고 충분히 추천할 수 없습니다. 그러나 FrankenPHP에는 자체 Caddy 서버가 포함되어 있으므로 이를 실험하고 있습니다. 우리는 캐디를 고수하지 않을 수도 있지만 지금은 목록에 있습니다.

PHP 8.4는 아직 출시되지 않았지만 EventPress 4는 한동안 출시되지 않을 예정이므로 가능한 최신 버전에서 시작하는 것이 합리적이었습니다. 글을 쓰는 시점에서 PHP 8.4 출시가 한 달 정도 남았기 때문에 최신 출시 후보를 사용하고 있습니다.

InertiaJS 2도 거의 같은 이야기입니다. 베타 버전이기도 하지만 출시까지는 아직 멀기 때문에 아마도 EventPress가 출시되기 훨씬 전에 출시될 것입니다. 게다가 우리는 오랫동안 문제 없이 InertiaJS 1을 베타 버전으로 실행했습니다.

정적 분석

저는 최근 정적 분석으로 전환했습니다. 제가 가장 많이 사용한 것은 PHPStorm이 코딩할 때 제공하는 것입니다. EventPress 4의 경우 우리는 완전히 집중하여 PHPStan을 혼합하기로 결정했습니다. PHPStan은 타사 PHP용 정적 분석기입니다. 구성이 매우 간단하고 다른 여러 프로젝트에서 몇 가지 버그를 제거하는 데 도움이 되었습니다.

EventPress의 크기를 기준으로 여기에서도 의미가 있습니다. 이 작업을 수행하기 위해 원할 때마다 실행할 수 있고 CI 스크립트에 추가할 수 있는 test:types Composer 스크립트를 추가했습니다.

코드 린팅

저는 PHP 코드 린터를 실행한 적이 없습니다. 나는 PHP Mess Detector를 몇 번 사용해 보았지만 실제로는 그것에 얽매이지 않았습니다. EventPress 4의 경우 Linter가 코드를 깔끔하고 일관되게 유지하는 데 도움이 될 것이라고 결정했습니다. 우리는 PHP-CS-Fixer를 감싸는 래퍼이자 코드를 깔끔하게 유지하는 간단한 방법을 제공하는 Laravel의 "Pint"를 선택했습니다. 다시 한 번 더 쉽게 실행할 수 있도록 lint 및 test:lint Composer 스크립트를 추가했습니다.

개발 환경

개발 중에는 Mac과 Linux 시스템 모두에서 작업합니다. 내 책상에는 몇 년 동안 사용했던 M1 Max가 있고, 사무실 여기저기에는 Linux 컴퓨터 몇 대가 흩어져 있습니다. 내 주요 드라이버는 Mac이고 대부분의 개발 작업을 Mac에서 수행하지만 모든 코드는 Linux 시스템에서 실행됩니다. 보통 우분투 서버입니다.

EventPress 4는 퍼즐에 몇 가지 새로운 조각을 추가하지만 대부분은 현재 방식대로 계속 개발할 수 있다고 생각합니다. 저는 Homebrew를 사용하여 대부분의 도구를 설치하고 Laravel Valet을 사용하여 로컬 개발 환경을 실행합니다. 저는 Laravel Herd 사용자가 아닙니다(좋습니다. 하지만 저는 Herd Pro 사용자에 더 가깝습니다. 이미 할 수 있는 모든 작업을 조금 더 빠르게 수행하는 도구에 연간 99달러를 지출하는 것을 정당화할 수 없습니다. 좋은 UI).

그래서 내 계획은 내 로컬 컴퓨터에서 MySQL 데이터베이스와 함께 실행되는 eventpress4.test 도메인을 갖는 것입니다. 저는 초기 개발 동안 한동안 이 상태를 사용할 것이며 며칠마다 Octane으로 테스트를 수행할 것입니다. 초기 단계를 마치면 Octane을 더 정기적으로 사용하여 개발을 시작할 것입니다. 프로덕션 환경에서 실행될 예정이므로 앱을 실행하는 테스트 서버를 호스팅할 예정입니다.

컨테이너

EventPress는 컨테이너화된 적이 없습니다. 그러나 EventPress 4는 그런 식으로 진행될 가능성이 높습니다. 우리는 여전히 몇 가지 실험을 하고 있지만 일부 기업 고객과 대화를 나눴으며 이것이 배포 프로세스를 훨씬 더 쉽게 만드는 데 도움이 될 것이라고 생각합니다. Docker 컨테이너에서 EventPress 3을 실행하는 몇 가지 초기 테스트를 진행했으며 이것이 앞으로의 모든 EventPress 릴리스에 적합한 조치가 될 것이라고 생각합니다.

힘내

수년 동안 우리는 CI/CD 서비스로 GitLab에 크게 의존해 왔습니다. GitLab은 다수의 복잡한 CI 파이프라인을 실행하고 제가 작업하는 거의 모든 프로젝트에 대한 배포를 수행합니다.

하지만 저는 수년간 GitHub 사용자이기도 했습니다. 나는 주로 오픈 소스 작업에 그것을 사용했지만 최근 일부 소규모 프로젝트를 유료 GitHub 계정으로 옮기기 시작했고 매우 감동 받았습니다. GitLab과 매우 다르게 작동하는 점이 몇 가지 있지만 대부분의 측면에서는 정말 만족스럽습니다.

따라서 EventPress 4 코드는 GitHub에서 호스팅되며 CI 파이프라인 및 모든 배포에 작업을 사용하게 됩니다.

준비, 출발!

이번 포스팅은 여기까지인 것 같습니다. 아직 진행할 계획이 있지만 일부 코드를 작성하고 테스트를 작성하기 시작했습니다. 나는 이미 기본 인증 레이어를 갖고 있지만(Laravel에게 감사드립니다), 대부분은 EventPress 3과 유사합니다. 다음 코드에서 몇 가지 코드를 보여드리겠습니다. 약속해요!

Building EventPress  Part 1

초기버전4 로그인

위 내용은 EventPress 파트 1 구축의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

<gum> : Bubble Gum Simulator Infinity- 로얄 키를 얻고 사용하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
Nordhold : Fusion System, 설명
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora : 마녀 트리의 속삭임 - Grappling Hook 잠금 해제 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

PHP에서 보안 비밀번호 해싱을 설명하십시오 (예 : Password_hash, Password_Verify). 왜 MD5 또는 SHA1을 사용하지 않습니까? PHP에서 보안 비밀번호 해싱을 설명하십시오 (예 : Password_hash, Password_Verify). 왜 MD5 또는 SHA1을 사용하지 않습니까? Apr 17, 2025 am 12:06 AM

PHP에서 Password_hash 및 Password_Verify 기능을 사용하여 보안 비밀번호 해싱을 구현해야하며 MD5 또는 SHA1을 사용해서는 안됩니다. 1) Password_hash는 보안을 향상시키기 위해 소금 값이 포함 된 해시를 생성합니다. 2) Password_verify 암호를 확인하고 해시 값을 비교하여 보안을 보장합니다. 3) MD5 및 SHA1은 취약하고 소금 값이 부족하며 현대 암호 보안에는 적합하지 않습니다.

PHP 및 Python : 두 가지 인기있는 프로그래밍 언어를 비교합니다 PHP 및 Python : 두 가지 인기있는 프로그래밍 언어를 비교합니다 Apr 14, 2025 am 12:13 AM

PHP와 Python은 각각 고유 한 장점이 있으며 프로젝트 요구 사항에 따라 선택합니다. 1.PHP는 웹 개발, 특히 웹 사이트의 빠른 개발 및 유지 보수에 적합합니다. 2. Python은 간결한 구문을 가진 데이터 과학, 기계 학습 및 인공 지능에 적합하며 초보자에게 적합합니다.

PHP 실행 : 실제 예제 및 응용 프로그램 PHP 실행 : 실제 예제 및 응용 프로그램 Apr 14, 2025 am 12:19 AM

PHP는 전자 상거래, 컨텐츠 관리 시스템 및 API 개발에 널리 사용됩니다. 1) 전자 상거래 : 쇼핑 카트 기능 및 지불 처리에 사용됩니다. 2) 컨텐츠 관리 시스템 : 동적 컨텐츠 생성 및 사용자 관리에 사용됩니다. 3) API 개발 : 편안한 API 개발 및 API 보안에 사용됩니다. 성능 최적화 및 모범 사례를 통해 PHP 애플리케이션의 효율성과 유지 보수 성이 향상됩니다.

스칼라 유형, 반환 유형, 노조 유형 및 무효 유형을 포함한 PHP 유형의 힌트 작업은 어떻게 작동합니까? 스칼라 유형, 반환 유형, 노조 유형 및 무효 유형을 포함한 PHP 유형의 힌트 작업은 어떻게 작동합니까? Apr 17, 2025 am 12:25 AM

PHP 유형은 코드 품질과 가독성을 향상시키기위한 프롬프트입니다. 1) 스칼라 유형 팁 : PHP7.0이므로 int, float 등과 같은 기능 매개 변수에 기본 데이터 유형을 지정할 수 있습니다. 2) 반환 유형 프롬프트 : 기능 반환 값 유형의 일관성을 확인하십시오. 3) Union 유형 프롬프트 : PHP8.0이므로 기능 매개 변수 또는 반환 값에 여러 유형을 지정할 수 있습니다. 4) Nullable 유형 프롬프트 : NULL 값을 포함하고 널 값을 반환 할 수있는 기능을 포함 할 수 있습니다.

PHP의 지속적인 관련성 : 여전히 살아 있습니까? PHP의 지속적인 관련성 : 여전히 살아 있습니까? Apr 14, 2025 am 12:12 AM

PHP는 여전히 역동적이며 현대 프로그래밍 분야에서 여전히 중요한 위치를 차지하고 있습니다. 1) PHP의 단순성과 강력한 커뮤니티 지원으로 인해 웹 개발에 널리 사용됩니다. 2) 유연성과 안정성은 웹 양식, 데이터베이스 작업 및 파일 처리를 처리하는 데 탁월합니다. 3) PHP는 지속적으로 발전하고 최적화하며 초보자 및 숙련 된 개발자에게 적합합니다.

PHP와 Python : 다른 패러다임이 설명되었습니다 PHP와 Python : 다른 패러다임이 설명되었습니다 Apr 18, 2025 am 12:26 AM

PHP는 주로 절차 적 프로그래밍이지만 객체 지향 프로그래밍 (OOP)도 지원합니다. Python은 OOP, 기능 및 절차 프로그래밍을 포함한 다양한 패러다임을 지원합니다. PHP는 웹 개발에 적합하며 Python은 데이터 분석 및 기계 학습과 같은 다양한 응용 프로그램에 적합합니다.

PHP에서 SQL 주입을 어떻게 방지합니까? (준비된 진술, pdo) PHP에서 SQL 주입을 어떻게 방지합니까? (준비된 진술, pdo) Apr 15, 2025 am 12:15 AM

PHP에서 전처리 문과 PDO를 사용하면 SQL 주입 공격을 효과적으로 방지 할 수 있습니다. 1) PDO를 사용하여 데이터베이스에 연결하고 오류 모드를 설정하십시오. 2) 준비 방법을 통해 전처리 명세서를 작성하고 자리 표시자를 사용하여 데이터를 전달하고 방법을 실행하십시오. 3) 쿼리 결과를 처리하고 코드의 보안 및 성능을 보장합니다.

PHP 및 Python : 코드 예제 및 비교 PHP 및 Python : 코드 예제 및 비교 Apr 15, 2025 am 12:07 AM

PHP와 Python은 고유 한 장점과 단점이 있으며 선택은 프로젝트 요구와 개인 선호도에 달려 있습니다. 1.PHP는 대규모 웹 애플리케이션의 빠른 개발 및 유지 보수에 적합합니다. 2. Python은 데이터 과학 및 기계 학습 분야를 지배합니다.

See all articles