이전 글에서는 빈 Composer 프로젝트를 생성했습니다. 이번 글에서는 라우팅을 빌드하는 방법을 설명하겠습니다.
잘 알려진 CodeIgniter 프레임워크는 많은 사람들에게 PHP 개발을 위한 입문 프레임워크이기도 하며 제가 웹사이트 구축 방법을 처음부터 배우기 시작한 프레임워크이기도 합니다. CI에서 많은 것을 배웠는데, 그 중 MVC에 대한 깊은 이해와 프레임워크의 본질에 대한 이해가 가장 큰 영향을 미쳤습니다. 개발 효율성을 높이기 위해 프레임워크를 사용한다는 관점에서 볼 때 프레임워크의 본질은 라우팅입니다.
먼저 GitHub로 이동하여 검색해 보겠습니다. 검색 결과를 보려면 여기를 클릭하세요
권장https://github.com/NoahBuscher/Macaw, 해당 Composer 패키지는codingbean/macaw입니다. 작성자가 GitHub에서 이름을 변경해야 하므로 문제가 발생할 수 있습니다. Macaw 패키지 설치를 시작하고 작곡가.json을 변경해 보겠습니다.
{ "require": { "codingbean/macaw": "dev-master" }}
작성기 업데이트를 실행하면 다음 디렉터리가 표시됩니다.
이 시점에서 Macaw 패키지가 성공적으로 설치되었습니다!
다음은 기적을 목격한 순간입니다! 우리는 MFFC에 생명을 불어넣고 실제로 운영되도록 하겠습니다!
새 MFFC/public 폴더를 만듭니다. 이 폴더는 사용자에게 표시되는 유일한 부분입니다.
폴더에 새 index.php 파일을 만듭니다.<?php// Autoload 自动载入require '../vendor/autoload.php';// 路由配置require '../config/routes.php';<br />
윗줄은 Composer의 자동 로딩 기능 도입을 나타내고, 아랫줄은 라우팅 구성 파일 로딩을 나타냅니다. 새 MFFC/config 폴더를 만들고 그 안에 다음 내용이 포함된 새 routs.php 파일을 만듭니다.
<?phpuse NoahBuscher\Macaw\Macaw;Macaw::get('fuck', function() { echo "成功!";});Macaw::get('(:all)', function($fu) { echo '未匹配到路由<br>'.$fu;});Macaw::dispatch();<br>
Macaw의 문서는 https://github.com/NoahBuscher/Macaw에 있습니다. HTTP 서비스 소프트웨어 유형에 따라 의사 정적을 설정하세요. 실제로 대부분의 프레임워크와 동일합니다. php를 색인할 정적 파일입니다.
그런 다음 Apache 또는 Nginx를 사용하여 MFFC/public 디렉터리에 특정 포트를 할당합니다. 이 단계에서는 Apache 또는 Nginx를 사용하는 것이 좋습니다.
PHP에 내장된 HTTP 서버를 사용하는 경우:
cd public && php -S 127.0.0.1:3000
라우팅을 유발하는 Macaw::get('fuck'은 응답하기 위해 Macaw::get('/fuck'으로 작성되어야 합니다.
Apache mod_php와 Nginx php-fpm을 사용하는 현재 코드에는 문제가 없습니다.
포트 81을 로컬로 연결했습니다. http://127.0.0.1:81/fuck을 방문하면 다음을 볼 수 있습니다.
페이지가 깨져 보이는 경우 인코딩을 UTF-8로 조정하세요. 위 페이지가 성공적으로 표시되었다면 축하합니다. 라우팅 구성이 성공한 것입니다!
Macaw에는 파일이 하나뿐이고, 빈 줄을 제거하는 데 100줄이 조금 넘는 시간이면 코드를 통해 직접 확인할 수 있습니다. 아래에서 간단히 분석해 보겠습니다.
1. Composer의 자동 로딩은 각 URL이 MFFC/public/index.php를 구동한 후 메모리의 파일 이름에 대한 전체 네임스페이스 클래스 이름 배열을 유지하므로 코드 타임에서 특정 클래스를 사용할 때 클래스가 포함된 파일이 자동으로 로드됩니다.
2. 라우팅 파일에 Macaw 클래스를 로드했습니다: "use NoahBuscherMacawMacaw;" 그런 다음 정적 메서드::get()을 두 번 호출했습니다. 이 메서드는 존재하지 않으며 MFFC/vendor/codingbean/macaw에서 사용됩니다. /Macaw.php의 __callstatic()이 대신합니다.
3. 이 함수는 $method와 $params라는 두 개의 매개변수를 허용합니다. 전자는 특정 함수 이름(여기에서는 get)이고 후자는 이 호출에 전달된 매개변수(즉, Macaw::get(')입니다. 젠장', function(){...})의 두 매개변수. 첫 번째 매개변수는 모니터링하려는 URL 값이고, 두 번째 매개변수는 콜백 역할을 하며 URL이 성공적으로 일치한 후 수행하려는 작업을 나타내는 PHP 클로저입니다.
4.__callstatic()은 매우 간단한 작업을 수행하며 대상 URL(예: /fuck), HTTP 메서드(예: GET) 및 콜백 코드를 세 가지 Macaw 클래스 $routes, $methods 및 $의 정적 파일에 푸시합니다. 콜백.멤버 변수(배열).
5. 라우팅 파일의 마지막 줄에 있는 Macaw::dispatch() 메소드는 현재 URL이 실제로 처리되는 곳입니다. 직접 매칭이 가능한 경우에는 콜백을 직접 호출하고, 직접 매칭이 불가능한 경우에는 일반 매칭을 사용합니다.