>  기사  >  php教程  >  나만의 간단한 MVC 프레임워크 myPHP를 직접 작성해 보세요.

나만의 간단한 MVC 프레임워크 myPHP를 직접 작성해 보세요.

WBOY
WBOY원래의
2016-08-08 08:49:491848검색

myPHP프레임워크

MVC 아이디어를 채택하여 순수한 객체지향 및 단일 항목을 프로젝트에 적용하고 맞춤형 프레임워크를 구현합니다. (자신의 관심에 맞춰 실천하세요)

1. 프로젝트 단독 입장

참가파일

myphpindex.php 프론트 데스크

웹사이트에 대한 모든 요청은 index.phpadmin.php 파일(항목 파일)을 요청합니다. 입구는 매우 간단하며, 접근 권한을 정의하는 데 사용됩니다. 초기화 파일 을 소개합니다.

초기화 파일

캐릭터 세트

경로

구성 파일

자동 로딩

시스템 오류 표시_오류='on' error_reporting =E_ALL

주로 문자 집합 설정, 경로 상수 구성, 구성 파일, 시스템 오류 등을 구현하고, URL의 모듈이나 동작을 분석한 다음, 모듈과 동작을 자동으로 배포하는 데 사용됩니다. (은 본질적으로 객체를 인스턴스화하고 호출하는 것입니다. 객체 메소드 ). 신청

컨트롤러 C

주로 사용자 요청에 따른 비즈니스 로직 처리를 완료합니다. 모델(M)을 호출하고, 데이터를 수신하고, 뷰 클래스를 호출하여 데이터를 처리하고 사용자에게 데이터를 에코합니다.

모델 M

모델은 데이터 테이블에 해당하며, 모델은 클래스로 코드에 반영됩니다. 클래스의 메소드는 사용자의 비즈니스 요청을 기반으로 데이터 테이블에서 작동하는 SQL 문입니다(사용자의 요청은 최종적으로 모델에 SQL 문으로 반영됩니다).

SQL 문의 실행은 DB 클래스에 의해 수행됩니다(이 프레임워크에서는 자체 캡슐화된 PDO 클래스가 사용됩니다).

V 보기

주로 HTML 페이지에 데이터를 표시하는 데 사용됩니다.

직접 그린 그림 :

MVC의 장점: 서로 간섭하지 않고 각자의 임무를 수행하므로 개발 시 분업에 유리합니다.

코드 재사용에 도움이 됩니다.

시장의 주류 프레임워크는 기본적으로 MVC 아이디어를 충족합니다.

2. myPHP 프레임워크 구축

웹사이트에는 많은 파일이 사용됩니다. 디렉토리를 사용하여 카테고리별로 저장하는 것이 합리적인 접근 방식입니다.

1. 디렉토리 구조:

프런트엔드 부분과 백엔드 부분이 있는 웹사이트의 경우 두 가지 구현 솔루션이 있습니다.

1. 듀얼 호스트(도메인 이름 2개), 프런트 데스크와 백 데스크가 각각 하나의 도메인 이름에 해당합니다. 안전

2. 프런트엔드와 백엔드는 동일한 호스트를 공유합니다. 편의성(첫 번째 계획)

X: 자신의 환경에 따른 myphp 경로

X: 자신의 환경 myphpAdmin 웹사이트 백엔드 메인 디렉터리 경로에 따름

여기에 생성된 폴더:

2. 호스트를 생성하세요

httpd-vhosts.conf 구성 파일에서 구성

3. 응모파일

/myphp/아래에 index.php 파일을 생성하세요

설명:

항목 파일에 ACCESS 상수를 정의하고, 이후의 모든 PHP 파일에서 이 상수가 존재하면 합법적인 액세스를 의미하고, 그렇지 않으면 불법 액세스를 의미합니다

가져온 Application.class.php 파일에서 네임스페이스를 사용하므로, Application 클래스에 접근할 때 비정규 접근을 사용해야 합니다. CoreApplication::run();

확장:

프로젝트의 단일 진입점을 달성하는 또 다른 솔루션은 Apache의 재작성 메커니즘을 사용하는 것입니다.

4. 초기화 파일

a. 코어 디렉터리에 Application.class.php 파일을 생성합니다.

먼저 액세스 가능한지 테스트하세요.

참고: 아래 클래스 이름을 스크린샷에 표시하지 않습니다. 모든 메서드는 클래스 내에 있습니다.

b. Application 클래스에 setChar 메소드를 생성하여 문자 집합 설정을 완료합니다

개인용 정적 메서드를 작성한 후에는 공용 정적 메서드를 단일 콘센트로 액세스하여 이를 효과적으로 적용해야 합니다. 참고: 아래에서는 다른 메서드의 단일 콘센트에 대한 스크린샷을 더 이상 찍지 않겠습니다. 그들은 모두 내부에 있습니다.

c. 시스템 오류 처리 방법을 설정합니다

일반적으로 개발 중에는 사용자에게 오류 메시지와 친숙하지 않은 인터페이스가 표시되지 않도록 php.ini의 구성 파일 display_errors=off가 꺼지는 경우가 많습니다.

d. 디렉토리 상수 정의

PHP 파일에는 파일이 자주 도입되므로 가져온 파일은 디렉토리에 저장되므로 통일된 관리와 편리한 유지 관리를 위해 디렉토리의 절대 경로가 디렉토리 상수로 설정됩니다

(echo, var_dump는 원하는 정보가 올바른지 확인하기 위해 디버깅을 수행하는 것입니다)

e. 구성 파일 가져오기

구성 파일에 포함된 구성 정보는 일반적으로 웹사이트에서 변경될 수 있는 정보이지만 거의 변경되지 않습니다.

myphp/config/config.php 구성 파일 생성

설명:

php 파일에서의 반환은 명령문(include, require)이 포함된 파일로 데이터를 반환하는 것입니다.

요약:

전역 변수 전역에서만 가능

지역변수는 정의된 함수 내에서만 존재합니다

클래스 속성은 여러 메서드에 걸쳐 사용할 수 있습니다.

전역 상수는 여러 클래스에서 사용할 수 있습니다

$_SESSION 크로스 스크립트 사용 가능

f, 자동 로딩

__autoload(); PHP 자동 로딩 메커니즘에 의해 호출됨

spl_autoload_register(); PHP에서 제공하는 __autoload()와 유사한 여러 함수를 자동 로딩 메커니즘에 추가할 수 있습니다.

디버그는 단일 항목으로 테스트해야 합니다.

다른 폴더 자동 로딩: 일반적으로 클래스 파일이 있는 폴더만 로딩됩니다.

지정된 기능을 자동 로딩 기능으로 등록:

설명

모든 loadCore, loadController, loadModel 등은 autoLoad에 의해 호출됩니다.

autoLoad가 run 메소드

에서 다시 호출됩니다.

모든 클래스 인스턴스화와 클래스 메소드 이동은 index.php에 있습니다

5. URL 분석

모든 요청의 본질은 애플리케이션을 요청하는 모든 URL입니다. 애플리케이션이 사용자의 요청과 어떤 클래스 파일을 처리해야 하는지 정확하게 알 수 있도록 하려면 웹사이트에서 모든 URL 설정을 고려해야 합니다. 특정 규칙이 있으며 클래스 파일 이름에도 특정 규칙이 있어야 합니다.

l URL 규칙:

http://localhost/index.php?module=클래스 이름&action=클래스의 메소드 이름

l 클래스 명명 규칙:

컨트롤러 클래스인 경우:

클래스명 Controller 파일명 : 클래스명 Controller.class.php

모델 클래스인 경우:

클래스명 모델 파일명 : 클래스명 Model.class.php

6. 배포 요청

(핵심은 컨트롤러를 동적으로 인스턴스화하고 컨트롤러의 메서드를 호출하는 것입니다)

7. 오픈 세션

참고: 모든 메서드는 단일 종료에서 액세스해야 합니다.

요약:

l 모든 PHP 파일은 index.php 파일에서 실행됩니다.

l 애플리케이션은 컨트롤러 파일만 처리합니다

l 컨트롤러 컨트롤러 파일은 모델 모델 파일을 처리합니다

l 애플리케이션이 사용자의 요청에 따라 클래스의 메소드를 정확하게 호출할 수 있는 이유는 전적으로 우리가 정의하는 URL 규칙 및 클래스 명명 규칙에 달려 있습니다.

애플리케이션 네임스페이스:

네임스페이스의 명명 규칙은 파일이 위치한 디렉터리 이름을 네임스페이스 이름으로 사용하는 것입니다.

공백이 포함된 경우 클래스 이름 앞에 공백 이름이 있다는 점을 고려해야 합니다.

8. 디스플레이

URL에 액세스하면 기본 경로가 전달됩니다:

URL을 통한 다른 컨트롤러의 액세스 방법

추가됨: pathinfo 모드는 $_SERVER['PATH_INFO'];

를 전달할 수 있습니다.

그 정도입니다. 나중에 시간이 나면 더 추가하겠습니다.

모토: 인생은 끊임없이 배우고 또 배우는 것입니다.

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