이 기사에서는 PHP를 사용하여 자신만의 웹 프레임워크를 구축하는 방법을 1분 동안 배울 수 있습니다. (공유)에는 일정한 참고 가치가 있습니다. 도움이 필요한 친구들이 모두 참고할 수 있기를 바랍니다.
여기에 언급된 WEB은 Apache에서 실행되는 PHP WEB 프로그램을 의미합니다. H 우선, 우리는 Apache에서의 PHP 실행 메커니즘과 요청의 라이프사이클을 이해해야 합니다.
PHP는 스크립트 언어입니다. 실행 프로세스는 파일 항목부터 시작하여 다른 파일을 포함하거나 참조할 수 있으며 프로세스 지향적입니다. 이 과정에서 객체를 사용하여 필요한 다양한 논리적 처리를 구현할 수 있습니다. 하나 이상의 객체를 사용하여 필요한 기능을 완성할 수 있고, 어떤 기능을 완성하고 싶은지 객체에 알려줄 수도 있습니다. 이는 객체 지향 개발 방법이자 일반적인 개발 방법입니다. 따라서 프로세스 지향 운영 메커니즘에서는 객체 지향 개발 방법을 사용합니다.
각 HTTP 요청의 수명 주기는 프로그램이 끝날 때까지 시작됩니다. 다른 HTTP 요청의 변수는 더 이상 존재하지 않으며 서로 영향을 미치지 않습니다. 전역 선언, $GLOBALS 전역 배열 변수 및 정적 정적 변수를 사용하여 동일한 HTTP 요청에서 데이터를 공유할 수 있습니다. 세션을 사용하면 사이트 전체 데이터 공유를 달성할 수 있습니다. global 문은 일반적으로 메소드에 사용되며 프로세스 지향 개발에 사용되며 일반적으로 사용되지 않습니다. $GLOBALS와 static을 자주 사용하지만 직접적으로 동작할 수는 없으며 대신 객체나 특수 메소드로 관리합니다. 예를 들어 흔히 사용하는 싱글톤 모드는 $GLOBALS와 static을 사용하여 저장합니다.
PHP 프로그램에서는 프레임워크를 최대한 간단하고 효율적이며 명확하고 사용하기 쉽게 만드는 것을 고려하여 개발 및 유지 관리에 좋습니다.
기본 프로그램 모델은 계층화되고 모듈로 구분되는 MVC 모델을 사용합니다. 동시에 MVC와 협력하려면 유용한 URL 라우터가 필요합니다.
URL 라우터: 소스 코드 파일의 조직 구조와 코드의 명확성을 결정하는 매우 중요한 구성 요소입니다. 좋은 라우터는 프레임워크의 사용 용이성을 반영하여 논리적 항목을 쉽게 찾을 수 있습니다.
모델:항상 배열을 사용하세요. 배열을 사용할 때 주요 관심사는 배열의 내용이 명확하지 않다는 것입니다. 프로젝트에서 속성은 데이터베이스 필드를 참조하므로 모델 작업은 데이터 액세스 계층 DAO를 사용하여 캡슐화됩니다. 데이터베이스 접근 중에는 직접 배열 형태로 변환하는 것이 더 효율적입니다. 다른 시스템의 대화형 데이터 개체의 경우 일반적으로 인터페이스 문서 정의가 있습니다. ORM의 Active Record 기술에 관해서는 사용하지 않는 것이 좋습니다.
보기:smarty를 사용하기 시작했는데 성능 보고서에서 smarty가 실행한 방법이 너무 많은 시간이 걸렸습니다. 나중에는 하나의 파일이고 사용하기 쉽고 효율적이며 수정하기 쉬운 tmd_tpl을 사용했습니다. 뷰 템플릿에서 PHP 구문을 결합하고 이를 템플릿 변수로 보완합니다. MVC의 개념은 분리입니다. 이는 View에서 PHP 구문을 사용할 수 없다는 의미는 아닙니다. API 인터페이스인 경우 데이터를 특정 형식의 결과로 직접 변환하여 반환할 수 있습니다.
컨트롤러:또는 액션은 동작, 메서드 및 인터페이스를 나타냅니다. 컨트롤러의 한 계층만으로는 충분하지 않은 경우가 많습니다. 일반적으로 인터페이스 계층, 비즈니스 계층, 데이터 액세스 계층 및 통신 계층으로 구분됩니다. 인터페이스는 매개변수 확인, 액세스 권한 제어, 특정 서비스 호출, 최종 데이터 반환 또는 페이지 표시 등을 담당합니다. 모든 비즈니스는 인터페이스 레이어부터 시작하는 것이 가장 좋습니다. 그 전에는 프레임워크 작업만 수행해야 합니다. 특정 비즈니스 구현을 읽어야 하는 경우 인터페이스 레이어 입구를 따라 읽기만 시작하면 됩니다. 비즈니스 계층은 실제 비즈니스 기능을 수행하며 데이터 액세스 계층에서 데이터를 가져와 비즈니스 처리를 수행합니다. 데이터 액세스 계층은 데이터베이스 또는 호출 인터페이스에서 데이터를 얻고 간단한 데이터 변환 처리를 수행할 수 있습니다. PHP가 데이터 표시를 위한 프런트엔드로만 사용되고 백엔드가 C/C++/GO 등으로 실행되는 경우 비즈니스 계층만 캡슐화하고 백엔드에 데이터를 요청하기만 하면 됩니다. 비즈니스 계층으로 이동한 다음 인터페이스 계층으로 반환합니다.
위 내용은 일반적으로 시스템에서 가장 중요한 부분인 프로그램의 기본 프레임워크 구조, 즉 비즈니스의 프로세스 구조입니다. 하지만 아직 실용화와는 거리가 멀고, 세션 처리, 데이터베이스 접근, 로그 처리, 기타 기능 등 추가해야 할 기본 기능이 여전히 많다. 이러한 기본 기능은 일반적으로 프레임워크와 독립적이며 다른 프레임워크에 적용될 수 있습니다. 함수형 클래스는 프레임워크에 너무 밀접하게 결합되어서는 안 되며 일반적으로 결합 방법을 사용합니다. 우리는 이러한 기본 함수를 사용하기 쉬운 방식으로 핵심 클래스로 캡슐화하고 단일 또는 다중 인스턴스를 사용하여 이를 호출하거나 더 쉽게 사용할 수 있도록 클래스를 전역 메소드로 캡슐화합니다.
위 그림과 같이 중심을 잘 파악하고 정리하면 사업 역량을 반영하는 것입니다. , 프레임워크 기능을 편안하고 원활하게 사용/개발하는 방법을 반영합니다.
함수형 클래스 또는 비즈니스 클래스를 호출할 때 클래스 로딩 또는 가져오기 문제가 관련됩니다. 자동 로딩 기능을 사용해 보는 것은 어떨까요? 개인적인 경험과 IDE 지원에 따르면 IDE에는 직관적이지 않고 비우호적이라고 생각합니다. 예를 들어 F3는 정의된 방법을 찾을 수 없습니다. 이는 오픈 소스 시스템을 학습할 때의 경험이며 성능에도 영향을 미칩니다. 직접 require/include 하는 것이 더 편리합니다. 코드를 더 많이 작성해야 하지만 개발, 유지 관리, 읽기에 큰 편리함을 가져다줍니다. 단, 이름 수정 후 참조를 변경하는 것이 불편하지만 전역을 통해 수정할 수 있습니다. 찾다). 일부 공개 클래스는 항목에서 전역적으로 참조되며 비즈니스 클래스는 요청 시 참조됩니다. 성능 손실? 비즈니스는 대부분 수직적이기 때문에 일반적으로 require_once/include_once 대신 require/include를 사용할 수 있습니다. 몇 번 더 사용해도 문제가 되지 않으며, 우선 정확성이 보장됩니다. 프로그램의 성능은 이것에 의해 결정되지 않습니다. 자동 로딩은 많은 판단, 명령 및 스택 작업을 추가하며 파일 검색 및 성능 손실은 더 많을 것입니다. 그러나 좋은 자동 로딩 구현을 고려할 수 있습니다. 프레임워크 파일은 자동 로딩을 사용하지 않으며 단순하고 정확하게 위치하며 효율적이어야 하며 중복을 피해야 합니다.
로딩 후 어떻게 사용하나요? 메소드, 클래스 객체 메소드 또는 클래스 정적 메소드 호출? 다양한 시나리오에 따라 다릅니다. 전역 함수는 일반적으로 직접 호출되는 구성 콘텐츠를 얻기 위한 thinkPHP의 C 메서드와 같은 메서드 호출입니다. 인터페이스 계층->비즈니스 계층->데이터 액세스 계층 계층에 있는 경우 클래스 정적 메서드 호출을 사용합니다. 데이터베이스 작업 클래스, 일부 타사 함수 클래스 및 다형성 함수 클래스와 같은 일부 전역 함수 작업은 일반적으로 새 개체를 여러 번 생성할 필요 없이 싱글톤을 사용하여 사용됩니다.
다른 언어에서 매우 유용한 리플렉션 함수, 주석, IOC, 측면 지향 프로그래밍 및 기타 함수와 실습에 대해서는 기본적으로 PHP에서 구현할 수 있지만 실제 예제를 많이 봤지만 적용할 생각은 없었습니다. 프로젝트를 수행할 수 있다고 해서 반드시 사용해야 한다는 의미는 아닙니다. LAMP는 쉽게 웹 사이트를 개발할 수 있으며 일반적으로 웹 사이트 애플리케이션이므로 프레임워크(예: Spring)와는 다릅니다. 따라서 PHP의 사용은 웹 사이트의 비즈니스 프로세스와 성능에 더 중점을 두고 비즈니스 프로세스를 만듭니다. 명확합니다. 유지 관리가 용이하여 비즈니스를 복잡하게 하거나 성능을 저하시키지 않으면서 유연성을 보장합니다. 많은 웹사이트가 프런트엔드 렌더링에 PHP를 사용하고 백엔드 비즈니스에 c/C++/java를 사용한다는 점은 말할 것도 없이 고성능 웹사이트는 짧고 단순하며 빨라야 합니다. 따라서 PHP 웹사이트는 최대한 단순해야 합니다. 우리는 비즈니스 웹사이트 시스템이기 때문에 비즈니스 프로세스가 결정되고 실행이 처음부터 끝까지 진행됩니다. 코드에 반영된 비즈니스 코드는 실행 과정에서 반영되거나 주입되면 사람들의 이해에 영향을 미칩니다. 또한 버그 위치를 개발하고 유지할 때 프레임워크가 수행한 작업을 무시할 수도 있습니다. 호출할 만큼 유연성이 필요한 일부 일반 프레임워크나 타사 패키지와는 달리 유연성은 복잡하고 어느 정도 성능을 희생해야 합니다. 이러한 기능을 사용하려면 일부 초기화 코드나 일부 구성 초기화를 미리 수행해야 하는 경우가 많으며, 각 HTTP 요청은 한 번만 초기화하는 Java와 달리 간단한 기능의 경우에도 필요하지 않습니다. 예를 들어, 일부 편안한 프레임워크는 입구의 경로와 많은 수의 구성을 정의하지만 이는 어느 정도 명확성과 유연성을 제공하지만 이 경우에는 규칙 이상의 아이디어를 사용하는 것이 좋습니다. 구성.
위의 관행 중 일부는 다소 특이하거나 극단적이지만 원래의 프레임워크(고급 기능, 기술)->원래의 프로세스로 돌아가는 과정을 거쳤으며 이는 개인 고유의 감정이나 경험으로 이해될 수 있습니다. PHP의 기본 기능을 사용하면 프로젝트 시작, 비즈니스 프로세스 이해, 개발 및 유지 관리가 쉬워집니다. 과도한 성능 손실이 없으며 위치 최적화도 용이하게 할 수 있습니다. 간단히 말해서, 원시적 단순성은 성능 향상에 있어서 가장 좋은 것입니다. 비즈니스를 수직적으로 분리하여 작성하면 수행된 작업을 한 눈에 볼 수 있어 개발 효율성이 향상됩니다.
처음에 프로젝트 요구 사항에 따라 자신만의 PHP 프레임워크를 개발할 능력이 없다면, 프레임워크를 처음 사용한 후에는 다른 프로젝트에서 필요에 따라 자신만의 웹사이트를 구현하고 자신만의 웹사이트를 구성하는 것을 고려해야 합니다. 뼈대.
PHP 웹사이트 프레임워크를 사용하는 가장 간단하고 쉬운 방법에는 경로, 컨트롤러 및 뷰 템플릿 엔진이 필요하다고 생각합니다. 필요에 따라 다른 기능 모듈을 추가할 수 있습니다.
추천 학습: "PHP 비디오 튜토리얼"
위 내용은 PHP로 자신만의 웹 프레임워크를 구축하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!