YAMF (또 다른 MVC 프레임 워크)는 많은 설정 작업없이 MVC 패러다임을 빠르게 사용할 수 있도록 설계된 작은 PHP MVC 프레임 워크입니다. 필요한 것은 .htaccess 파일을 받아들이는 웹 서버입니다.
최소 요구 사항 : PHP 7.0+.
Use this template 을 클릭하여 리포지토리를 복제 하거나이 프로젝트를 자신의 프로젝트의 템플릿으로 사용하십시오.config.php 구성하십시오. 원하는 매개 변수를 조정하거나 세션 로직과 같은 $app 에 새 매개 변수를 추가하십시오. 기본적으로 사이트를 시작하고 실행하기 위해 아무것도 조정할 필요가 없습니다.config-private.sample.php config-private.php 로 복사하여 필요에 맞게 조정하십시오. 예를 들어, $app->db 로컬 데이터베이스의 PDO 인스턴스로 설정할 수 있습니다. config.php 의 어떤 것도 config-private.php 가로드됩니다.use Yamf/XYZ 하려면 작곡가를 사용해야합니다. Composer를 사용하는 것은 매우 쉽습니다. 다운로드 페이지로 이동하여 스크립트를 상단에서 실행하십시오. (참고 : Windows에있는 경우 여기서 소개 페이지에서 지침을 따르고 싶을 것입니다.)composer install (디렉토리에 composer.phar 파일이있는 경우 php composer.phar install 실행하십시오). 앉아서 잠시 생각할 것입니다. 그들은 여기에없고, 의도적으로 여기에 없습니다! YAMF는 Composer 's Autoloader 이외의 외부 종속성을 사용하지 않기 위해 의도적으로 작성되었습니다. 그 중 하나라도 원한다면, 작곡가와 같은 좋아하는 종속성 관리자와 함께 끌어 당기십시오. Composer는 이미 PSR-4 자동 로딩을 위해이 프로젝트를 실행하는 데 필요하므로 Composer를 사용하는 것이 좋습니다. vendor/autoload.php 는 이미 init.php 에 포함되어 있습니다.
보기 템플릿에 관한 참고 사항은 서브 클래스 섹션을 참조하십시오.
YAMF에서 다음 문서를 읽으면 코드를 직접 읽고 읽는 것보다 훨씬 나을 것입니다. :) 몇 분 밖에 걸리지 않으며 그만한 가치가 있습니다!
데이터베이스 설정 등과 같은 구성 매개 변수를 쉽게 통과하기 위해 YAMF는 클래스 YamfAppConfig 의 $app 변수를 각 컨트롤러 기능으로 전달합니다. 이 변수를 설정하여 데이터베이스 PDO 객체를 저장하고 뷰 확장 또는 폴더 위치 및 기타 여러 설정을 변경할 수 있습니다. $app 에 자신의 값을 추가하려면 YamfAppConfig 에서 파생 된 클래스를 만들고 config.php 에서 appConfigClass 설정을 변경하여 사용자 정의 클래스를 가리킬 수 있습니다. 사용자 정의 클래스는 YamfAppConfig 에서 파생되어야합니다! $app 통해 YAMF로 전달되는 모든 설정과 값을 보려면 config.php 참조하십시오. 특히, 당신은 할 수 있습니다 :
viewsFolderName )viewExtension )defaultHeaderName / defaultFooterName )config-private.php 에서 설정) $app 귀하의 견해에서 자동으로 사용할 수 있습니다.
아마도 가장 먼저하고 싶은 일은 새로운 경로를 추가하는 것입니다. 그렇게하려면 다음 단계를 따르십시오.
app/Controllers 폴더에 추가하십시오. 하위 폴더는 괜찮습니다. 컨트롤러는 실제로 이름에 Controller 필요하지 않지만 클래스 이름이 파일 이름과 일치해야합니다.$app 와 $request (해당 순서)의 두 매개 변수를 취하는 public 기능이어야합니다.routes.php 열고 경로 작동 방식에 대한 문서와 예를 이해하십시오.routes 배열에 경로를 추가하십시오.POST 을 지정하십시오.Parent-Folder/Controller-Name 형식의 이름이 있는지 확인하십시오.View 작동하지만 컨트롤러 방법은 일종의 yamf/Responses/Response 반환해야합니다. 자세한 내용은 다음 섹션을 참조하십시오.yamf/Responses/View 반환하고있을 것입니다. views 폴더에서 PHP 파일 (보기)을 만듭니다. 다시 한번, subfolders는 괜찮습니다 return new View('name/of/view'); .요컨대 :
app/Controllers 폴더에 컨트롤러 및 컨트롤러 메소드를 추가하십시오routes.php 에 경로를 추가하십시오views 폴더에서보기를 만듭니다return new View('name/of/view'); 경로의 결과로 호출되는 모든 컨트롤러 메소드는 yamf/Responses/Response 또는 해당 클래스의 서브 클래스를 반환해야합니다. 다음은 각각을 사용하는 방법에 대한 설명입니다. 대부분은 생성자만으로 한 줄로 사용할 수 있습니다.
Response - 경로에서 응답을위한 기본 클래스.new Response($statusCode = 200)yamf/Responses/Response 항목 서브 클래스이므로 원하는 경우 사용자 정의 HTTP 상태 코드를 모두 반환 할 수 있습니다!ErrorMessage - 400 상태 코드와 Error.php보기를 다시 보내려면 간단한 래퍼 주변보기.new ErrorMessage($msg = '', $name = 'error', $title = '', $headerName = '', $footerName = '') . $name 보기의 이름입니다.$error 입니다. 서브 클래싱 없이는 이것을 변경할 수 없습니다.views/header.php 및 views/footer.php 입니다.JsonResponse 컨트롤러에서 JSON 응답을 다시 보내는 방법에 대한 예제new JsonResponse($data, $jsonEncodeOptions = 0)echo json_encode($this->data, $this->jsonEncodeOptions); 통해 $data 출력합니다.NotFound 404를 찾는 데 사용되지 않은 메시지를 클라이언트에게 다시 찾을 수 있습니다.new NotFound($name = '404', $data = [], $title = '', $headerName = '', $footerName = '') . $name 보기의 이름입니다.views/header.php 및 views/footer.php 입니다.Response 사용하십시오.Redirect - 다른 페이지 또는 경로로 302 개를 리디렉션 할 수 있습니다.new Redirect($redirectPath, $isInternalRedirect = true)$isInternalRedirect 현재 웹 사이트/ routes.php 데이터 내의 경로로 리디렉션하는 데 사용됩니다. 내부 경로로 리디렉션하려면 다음과 같이 Redirect 사용하십시오 : new Redirect('/route/name); (시작 / ). 그렇지 않은 경우 다음과 같이 Redirect 사용하십시오 : new Redirect('https://example.com', false); .View -일부 PHP 기반 HTML보기를 반환하는 데 사용됩니다.new View($name, $data = [], $title = '', $headerName = '', $footerName = '') . $name 보기의 이름입니다.compact 함수를 사용하는 것입니다. 샘플의 BlogController 참조하십시오.views/header.php 및 views/footer.php 입니다. YAMF에 포함되어야 할 더 많은 Response 유형에 대한 아이디어가 있으면 (문제 탭을 통해) 기능 요청을 열거 나 풀 요청을 열십시오!
경로에서 컨트롤러 방법으로 두 가지 주요 변수가 전송됩니다 : $app 및 $request . 모든 View 출력에는 $app 및 $request 변수를 사용할 수 있습니다. $data 매개 변수로 보낼 필요가 없습니다.
AppConfig $app $app 은 주로 config.php 에서 설정 한 구성 변수입니다. 사용 가능한 것을 빠르게 한눈에 확인하십시오. 더 중요한 항목 중 일부는 다음과 같습니다.
$app->dbnull 로 설정할 수 있습니다. 그 외에도 init.php 에 설정된 두 가지 변수가 있습니다.
$app->isLocalHost 응용 프로그램이 로컬 호스트에서 실행 중인지 여부 ( 127.0.0.1 또는 ::1 )$app->basePath 현재 웹 응용 프로그램의 기본 디렉토리. 웹 서버에서 중첩 된 웹 애플리케이션을 허용하는 데 사용할 수 있습니다. 로컬 웹 사이트 링크를 수행 할 views 변수 를 사용하여 파일을 움직이거나 나중에 이동하는 경우 모든 것이 끊어지지 않습니다. 사이트의 다른 페이지에 링크하려면 $app->yurl(string) (Yamf URL) 기능을 사용하여 다음과 같이 사용하십시오. <?= $app->yurl('/path/to/page') ?> . $request $request 경로에 대한 모든 데이터와 요청과 함께 제공되는 다양한 매개 변수를 갖습니다. yamf/Request 유형입니다. 이 공개 회원이 있습니다.
$request->route 이 요청에 대한 원시 경로 문자열$request->controller -문자열 이름 컨트롤러 이름$request->function 통화 할 컨트롤러 함수의 문자열 이름$request->routeParams {id}와 같은 경로의 모든 매개 변수. 형식 : [ 'id'=> value]$request->get URL에서 찾은 모든 get 매개 변수-$ _get과 동일한 형식 (추가 처리 없음)$request->post 모든 게시물 매개 변수-$ _post와 동일한 형식 (추가 처리 없음)$request->anchor -사용하면 URL의 # 부분 ( #없이). 라우터는 /blah/#/foo 와 같은 URL에서 일치하지 않을 정도로 스마트합니다. 이 프레임 워크를 확장하는 가장 쉬운 방법은 Response (또는 다른 Response 아동 클래스)에서 파생하거나 일부 컨트롤러의 부모 클래스를 만드는 것입니다. 예를 들어, View 에서 파생되면 뷰 출력을 변경하여 간단한 PHP 출력 대신 Twig Templating Engine을 사용할 수 있습니다. 컨트롤러의 상위 클래스를 만들면 사용자 이름/암호 또는 토큰 확인과 같은 모든 API 경로에서 발생 해야하는 유효성 검사 또는 기타 추가 데이터 처리와 같은 사항을 추가 할 수 있습니다. 옵션은 끝이없고 잠재력이 위대합니다!
Twig Branch에서 RAW PHP 대신 Twig를 사용하는 예가 있습니다!
YAMF가 지원하는 멋진 기능 중 하나는 route 나 controller 필요하지 않은 정적 웹 페이지입니다. 간단한 페이지가되기를 /about about.php 페이지를 views/static/ 폴더에 버리고 -BAM! - /about 웹 사이트의 작업. /blog/post-name 과 같은 서브 폴더는 어떻습니까? 그것도 작동합니다! views/static/blog/post-name.php 파일을 추가하면 (TM)가 작동합니다! 이를 사용하여 경로와 컨트롤러를 추가하지 않고도 웹 사이트에 여전히 예쁜 URL을 사용할 수 있습니다.
config.php 에서 정적보기 위치를 구성 할 수 있습니다.
라우터는 정적 페이지를 확인하기 전에 router.php 경로와 일치하려고 시도합니다.
라우터가 즉시 활성화되지 않은 기능은 URL 단축입니다 (예 : https://example.com/short-url ). 데이터베이스 연결이 필요하지만 데이터베이스 연결을 추가하고 적절한 데이터베이스 테이블이 있으면 (스키마가 config.sample.php 에있는 경우) 원하는 경우 URL 단축을 사용할 수 있습니다. 이 기능을 활성화 할 필요는 없습니다.
config.sample.php 에 댓글을 달린 일부 기본 세션 로직을 포함 시켰습니다. 자유롭게 사용하거나 수정하거나 버리십시오. 이 기능을 개선하는 방법에 대한 제안이 있으시면 풀 요청 또는 문제를 열어 추가 토론을 생성하십시오.
당신이 물어봐서 다행입니다! 오픈 소스 프로젝트에는 항상 버그 수정, 새로운 기능 등을 수행 할 수있는 일이 항상 있습니다! 이 저장소의 문제 탭을 확인하고보고 된 버그와 요청 된 기능을 살펴보십시오. 기고 문서에 기여한 정보가 있습니다.
MIT 라이센스. 사이트에서 사용할 때이 프레임 워크에 대한 라이센스를 포함하십시오 (Github 링크와 함께). 감사합니다! :)
샘플에 사용 된 부트 스트랩 용지 테마에 대한 BootSwatch에게 특별한 감사를드립니다.