이것은 중소형 팀 개발을위한 프레임 워크입니다.
간단한 개인 블로그 bybzmt/blog.php
이 프레임 워크를 기반으로하는 개인 블로그 BYBZMT/Blog.php는 매우 강력한 성능을 가지고 있습니다.
| 모델 | 정적 파일 | 홈 (2 개의 블로그) | 홈 (10 블로그) |
|---|---|---|---|
| FPM | 4705 | 1507 | 1237 |
| Swoole | 26607 | 3276 | 2084 |
├── assets 资源目录(如:字体文件等)
├── config
│ ├── dev 开发环境配置
│ ├── product 生产环境配置
├── index.php 项目入口
├── library 其它与composer不兼容的库
├── src
│ ├── Admin 管理后台
│ ├── Api app接口端
│ ├── Backend 内部(内网)接口
│ ├── Common 公共代码目录
│ ├── Console 控制台
│ ├── Wap 手机Web端
│ └── Web Web端
├── static
│ ├── admin 后台静态文件
│ └── web Web端静态文件
├── tests 单元测试目录
├── var 可读写目录(如:模板缓存等)
└── vendor composer库
Swoole은 상주 메모리 모드이므로 글로벌 변수의 수명주기는 응용 프로그램 수준이며 FPM 모드와 달리 요청 수준 일뿐입니다. 다른 요청간에 글로벌 변수를 유지할 수 있으므로 $ _get 및 $ _post와 같은 원래 방법을 사용할 수 없습니다. 이 프레임 워크는 각 요청에 대한 컨텍스트 객체를 인스턴스화하고 현재 요청과 관련된 모든 데이터를 컨텍스트 객체에 저장합니다.
컨텍스트 객체는 또한 구성 요소 로딩 및 계층에서 함수를 교체하는 책임이 있습니다.
위 블로그에서와 같이 :
구성 요소를 초기화 할 때 컨텍스트 객체는 먼저 네임 스페이스의 해당 구성 요소를 찾습니다. 발견되지 않으면 부모 컨텍스트가 초기화됩니다. 이렇게하면 필요한 구성 요소를 쉽게 확장하고 교체 할 수 있습니다.
API :
요청 객체는 직접 사용되는 SWOOLE_HTTP_REQUEST입니다
응답 객체는 Swoole_http_response도 직접 사용합니다
FPM 모드에서 프레임 워크는 Swoole에서와 동일한 API를 유지하기 위해 호환성 레이어를 구현합니다.
프레임 워크는 컨텍스트 객체와 관련된 모든 객체를 구성 요소로 구현하며, 주로 빠른 인스턴스화 함수를 제공하고 컨텍스트 객체의 반복 전송이 필요하지 않습니다.
또한 구성 요소에는 모든 구성 요소에서 사용할 수있는 몇 가지 편리한 방법이 있습니다.
난간은 오픈 매핑을 채택하지 않지만 등록 된 라우팅을 사용하여 비교적 깨끗하다는 장점이 있습니다.
라우팅 프로젝트는 bybzmt/router.php에 있습니다
마음에 들지 않으면 원하는 라이브러리로 교체 할 수 있으며 프레임 워크의 구성 요소를 교체하는 것은 매우 쉽습니다.
프레임 워크는 서비스, 테이블, 행 (도메인) 구조를 사용하여 도메인 모델 패턴을 사용하는 것이 좋습니다.
데이터 표시 작업은 서비스, 테이블 및 행에 기록되어서는 안된다는 점에 유의해야합니다. 가장 기본적인 데이터를 제공하는 것이 담당합니다. 페이지 및 API 요구 사항에 따라 해당 데이터 구조를 구성하는 것은 컨트롤러 및 뷰에서 구현해야합니다.
데이터베이스는 테이블 기능을 제공하는 기본 기능 및 테이블 스플릿 클래스를 제공하는 테이블 클래스로 나뉩니다. 캐싱 기능을 제공하는 TableRowCache 특성도 있습니다. 모든 사용자 테이블은 테이블 또는 테이블 스플릿 클래스에서 상속되어야하며 캐시가 필요한 경우 도입 될 수 있습니다.
테이블과 캐시는 모두 테이블 클래스에서 Get/Gets/Insert/업데이트/삭제 만 지원합니다. SQL을 사용하여 데이터 작업을 직접 수행 할 때 관련 캐시 또는 테이블 기능을 수동으로 유지해야합니다.
프레임 워크는 게으른로드로드 방법을 제공합니다. 인스턴스팅을 할 때는 ID 만 기록한 다음 속성에 액세스 할 때까지 배치로로드하려고 시도합니다.
프레임 워크는 몇 가지 일반적인 기능을 제공하며 사용하기 편리합니다.
이 캐시는 위의 표에서 캐시와 관련이 없으며 사용자가 관리하는 캐시를 나타냅니다. 주요 충돌을 피하기 위해 다른 클래스로 다른 유형의 캐시를 관리하도록하십시오.
이 프레임 워크는 템플릿 기능을 제공하지 않으며 기존 타사 템플릿 프로그램을 직접 만드는 것이 좋습니다. (예 : Twig)
프레임 워크의 기능은 모든 환경에 적응하기를 원하지 않으며 사례의 80%에서만 사용할 수 있어야합니다. 특별한 상황은 특정 프로젝트에서 특별히 처리 될 수 있습니다.
프레임 워크에는 코드가 많지 않으므로 가능한 한 모든 코드를 읽으십시오.