>  기사  >  백엔드 개발  >  자신만의 PHP 프레임워크를 개발하는 것은 매우 간단합니다. 전혀 어렵지 않습니다!

자신만의 PHP 프레임워크를 개발하는 것은 매우 간단합니다. 전혀 어렵지 않습니다!

卡哇伊
卡哇伊앞으로
2020-07-16 17:00:343763검색

자신만의 PHP 프레임워크를 개발하는 것은 매우 간단합니다. 전혀 어렵지 않습니다!

시작점: 저는 개인적으로 자신만의 프레임워크를 개발하는 것도 네이티브성을 발휘하는 방법이라는 것을 알고 있습니다. 그것을 작성한 후에는 다른 프레임워크를 보는 것이 훨씬 쉬울 것입니다. 문서가 없거나 문서가 거의 없는 프레임워크를 발견하면 이 아이디어를 따라 추가할 수 있습니다. 아니면 그냥 네이티브로 가져와서 yii2를 처음 접했을 때의 일입니다. 기본적으로 순수 네이티브였고 csrf와 이중 언어를 사용했습니다. of yii2....

프레임워크 작성을 위한 미니멀한 아이디어:

원하는 대로 매개변수를 받고 인쇄하세요. 예를 들어 구성 파일을 얻는 방법은 전달된 매개 변수에 따라 결정됩니다. 1. 일반적으로 파일이 존재하는지 먼저 확인합니다. 존재한다면 포함되어야 하고, 새로운 것이라면 새로운 것이어야 합니다. 그런 다음 속성에 저장합니다(캐싱)

2. 주로 호출 프로세스: 실행 메서드에 넣어야 하는 모든 것

자세한 아이디어 :

1. 파일(2~5단계는 모두 항목 파일에 작성됨)

2. 상수 정의(즉, 프레임워크의 각 수준에 있는 디렉터리이므로 매번 긴 목록을 작성할 필요가 없습니다)

//定义框架根目录
//定义核心文件目录路径
//应用目录(包含控制器、模型等)
//是否开启调试
//如果DEBUG为true,将错误显示打开。否则不显示

3. 소개 함수 라이브러리

//加载公共方法
//加载核心文件

4. 자동 로딩이 존재하는지 확인합니다.

팁: 속성에 저장되어 있는데 실제로는 이 속성으로 판단됩니다.

존재하면 true를 반환하고,

이 존재하지 않으면 로드합니다.

팁: 백슬래시 교체

파일을 로드하려면 포함하면 됩니다.

참고: 이 파일이 루트 디렉터리에 있으면 false를 반환합니다.

참고: 작성한 후 lib 디렉터리를 만들고 라우팅 클래스를 도입합니다. Test

5, 시작 프레임워크

//调用核心文件中的run方法(我的核心文件是core/init.php)

6, 경로 분석 3부작

6.1, 숨겨진 항목 파일

6.2, URL 매개변수 가져오기

존재하는 경우 구문 분석

일반적으로 먼저 전송합니다. 배열 (편리하게 처리됨) 효과가 정상적이지 않습니다. (예: URL에 컨트롤러만 입력하고, 입력 방법이 없으며, 메서드에 기본값을 지정합니다. , 홀수를 입력했습니다.

기본값에 대해 존재하지 않습니다

6.3.해당 컨트롤러와 메소드를 반환합니다. (실제로는 6.2의 속성에 저장되어 반환된 것으로 간주됩니다.)

7. 컨트롤러 로드

실행 시 컨트롤러를 로드해야 합니다. 경로에 의해 구문 분석된 이름은 컨트롤러 파일의 경로에 철자됩니다.

컨트롤러 파일이 존재하는지 확인하고, 존재한다면 새로운 파일이 될 것입니다. 존재하지 않으면 오류가 발생합니다.

참고: 모듈의 개념은 애플리케이션이 아니라 모듈이며 성숙한 프레임워크보다 한 계층 낮습니다

.

실행하고 시도해 보세요. 실제로 이 단계에서는 보관 프레임워크가 완료되었으며 다음 단계는 프레임워크를 확장하는 것입니다

9.

데이터베이스 연결을 위해 lib에 모델 클래스 생성

컨트롤러에 새 모델 클래스 생성, 데이터베이스 운영을 위한 SQL 작성

10. 뷰 클래스 작성

할당 및 표시 방법은 다음과 같이 작성됩니다. 초기화(core/init.php) 클래스. 참고: 먼저 값을 할당한 다음 템플릿 파일을 포함합니다

그런 다음 컨트롤러는 이 클래스를 상속하고 호출합니다.

11. 구성 클래스 작성

새 구성 파일 클래스 만들기

단일 구성 파일을 작성하는 방법 (Tips: 매개변수를 얻으므로 매개변수 전달이 필수입니다. 매개변수 2개, 구성 items , 구성 파일 이름 인쇄 매개 변수를 상상해 보세요

)

            //1、判断配置文件是否存在,存在就include
            //2、判断配置项是否存在,存在直接给缓存到属性中
            //3、判断属性中有无缓存,有就直接返回属性中存的
모든 구성 파일을 얻는 쓰기 방법 팁: 새로운 구성 파일 디렉터리는 다양한 구성 파일(예: 데이터베이스, 경로, 경로)을 저장하는 데 사용됩니다. , 경로, 라우팅 예, 로그....)

테스트: 구성 파일이 잘 작동합니다

12. 로그 클래스 작성

/**
 * 提示:用的是工厂模式的思想:
 * 1、读取配置文件,获取当前驱动。在初始化方法中new类
 * 2、在log方法中,调用不同驱动中的log方法
 */
로그 클래스 생성드라이버 디렉토리 생성

로그 구성 파일 생성

13、使用composer:编写json文件,自己的框架上到github上供人家使用

第1个类库报错的地址:https://github.com/filp/whoops

第2个类库酷炫的打印变量:"s

"symfony/var-dumper":"*"//更帅气变量输出的效果
ymfony/var-umper":"*"//更帅气变量输出的效果

第3个类库数据库的地址:http://medoo.lvtao.net/1.2/doc.php

第4个类库模板引擎的地址:https://twig.symfony.com/doc/2.x/intro.html#installation

镜像网址:https://pkg.phpcomposer.com/

注意:下图很重要

14、使用medoo数据库类

如果自己封装pdo可能会有什么想象不到的漏洞,这样我们就不如直接用现成的类库加载

http://medoo.lvtao.net/

思路:先将原来继承的pdo换成该类库,在封装模型控制器调用

15、模板引擎类库

思路:修改display方法,改成类库的,还有模板布局

剩下其余的扩展就因人而异了,想不到的话,可能去参考成熟的框架

这里写2个封装好的方法

封装post接收方法(给大家做参考思路)

封装跳转方法

更多教程:《php教程

위 내용은 자신만의 PHP 프레임워크를 개발하는 것은 매우 간단합니다. 전혀 어렵지 않습니다!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제