목차
为什么选择 QeePHP
更具挑战性的任务
领域驱动设计
新希望 —— QeePHP
php教程 php手册 新一代 PHP 框架 QeePHP 发布

新一代 PHP 框架 QeePHP 发布

Jun 06, 2016 pm 07:56 PM
php 풀어 주다 새로운 세대 액자 선택하다

为什么选择 QeePHP 回顾一下曾经开发过的 PHP应用,大部分开发者都会发现这些应用中,数据的创建、读

为什么选择 QeePHP

回顾一下曾经开发过的 PHP 应用,大部分开发者都会发现这些应用中,数据的创建、读取、更新和删除操作是重复最多次的操作。但是不管我们如何简化这些 CRUD(创建、读取、更新、删除)操作,面对客户不断变化的需求,应用程序的内在结构总是逐渐变得凌乱。

而造成这种情况的根本原因就是我们没有正确使用面向对象的技术来设计和实现这些应用程序。由于业务逻辑固有的复杂性被所谓的 CRUD 快速开发能力所掩盖。本应是内聚的业务逻辑却拆散为一个个 CRUD 操作,分散到了应用程序的不同部分。如此一来,业务逻辑的变化必然会导致应用程序内部产生连锁反应式的改动,应用程序内在结构的逐渐腐朽变成了不可逆转的趋势。

更具挑战性的任务

随着 PHP 越来越多的应用在大型 Web 应用中,如何构造这些复杂应用已经成了一项挑战。下图是一位开发者通过反向工程获得的 Facebook 对象关系图 。虽然这张图并不完全准确,而且也有许多简化,但可以看出对象间仍然存在复杂的关系。对于这种应用,传统的 CRUD 操作根本不可能胜任。

新一代 PHP 框架 QeePHP 发布

Facebook 对象关系图

正是因为多年 PHP 开发的经验教训,以及面对复杂应用时的捉襟见肘,让我们下定决心改变现状。将“领域驱动设计”引入到 PHP 世界中。

领域驱动设计

“领域驱动设计”由 Eric Evans 于 2003 出版的《Domain-Driven Design: Tackling Complexity in the Heart of Software》(国内译名: 领域驱动设计–软件核心复杂性应对之道 )一书中进行全面阐述。“领域驱动设计”回归了面向对象思想的本质,提出了一系列创建面向对象应用程序的指导原则,以及实践这些原则的设计模式和解决方案。

可惜的是虽然已经经过了 5 年时间,但领域驱动在 PHP 世界并没有引起大的反响,因为大多数 PHP 开发者已经习惯了编写那些“一次性”的代码。即便是各种 PHP 开发框架的出现,也没有改变这种状况。造成困境的根本原因,并不在于 PHP 语言本身的限制,而是使用 PHP 开发的 Web 应用直到今天才逐步发展为具有高度内在复杂性的软件系统。正所谓没有需求就没有市场,在大多数 PHP 应用都很简单的情况下,领域驱动这样一种需要从思想上进行改变的开发模式自然难以在 PHP 世界中流行。

但市场已经发生了变化,今天的用户要求我们能够更快更好的创建高质量的应用程序,改变传统 PHP 开发模式的时机已经完全成熟。

新希望 —— QeePHP

QeePHP 是一个遵循“领域驱动设计”思想设计和实现的 PHP 开发框架。在保持易学易用、快速稳定的同时,QeePHP 为创建具有复杂内在逻辑的 Web 应用提供了全面的支持。

“领域驱动设计”是一种设计和架构思想,以“模型”为核心,将业务逻辑封装到一个个内聚的模型之中,从而避免业务逻辑被分散到应用程序的各个部分。 这样一来,不管是增加了新的业务需求还是已有需求的改变,我们都能够将修改局限在一个相对较小的范围。从根本上避免了需求快速更新导致应用程序内在结构逐 渐腐朽的问题。

由于“领域驱动设计”的思想基础就是“模型”,所以框架必须为“模型”的定义、封装、持久化,以及模型关系的维护和扩展提供良好支持。QeePHP 实现了完善的 ORM(对象关系映射)系统,能够应付各种复杂的业务需求。利用 QeePHP 提供的帮助,开发者可以将精力放到如何完成“业务逻辑”之上,而不是不断的重复 CRUD 操作。

 

更进一步,QeePHP 提供了灵活的视图机制,让开发者可以轻松完成用户界面组件化工作,为高效开发奠定了基础。除此以外,QeePHP 的表单模型、用户界面控件、可扩展内核架构,都是构建复杂应用程序不可或缺的强力工具。

除了技术上的创新,QeePHP 还凝聚了 起源科技 团队及社区超过 5 年的框架设计和开发经验。无论是易用性、可靠性、运行性能还是扩展能力,QeePHP 都达到了当今 PHP 开发框架的极致。

最后,我们想说经过近两年的开发,QeePHP 已经为实践“领域驱动设计”做好了准备、为开发复杂应用提供了一个坚实的基础。我们坚信,随着 PHP 开发者面对的需求越来越困难,QeePHP 开源开发框架及其背后的思想必定会为大家所了解、信任与采用。

 

 

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

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

JWT (JSON Web Tokens) 및 PHP API의 사용 사례를 설명하십시오. JWT (JSON Web Tokens) 및 PHP API의 사용 사례를 설명하십시오. Apr 05, 2025 am 12:04 AM

JWT는 주로 신분증 인증 및 정보 교환을 위해 당사자간에 정보를 안전하게 전송하는 데 사용되는 JSON을 기반으로 한 개방형 표준입니다. 1. JWT는 헤더, 페이로드 및 서명의 세 부분으로 구성됩니다. 2. JWT의 작업 원칙에는 세 가지 단계가 포함됩니다. JWT 생성, JWT 확인 및 Parsing Payload. 3. PHP에서 인증에 JWT를 사용하면 JWT를 생성하고 확인할 수 있으며 사용자 역할 및 권한 정보가 고급 사용에 포함될 수 있습니다. 4. 일반적인 오류에는 서명 검증 실패, 토큰 만료 및 대형 페이로드가 포함됩니다. 디버깅 기술에는 디버깅 도구 및 로깅 사용이 포함됩니다. 5. 성능 최적화 및 모범 사례에는 적절한 시그니처 알고리즘 사용, 타당성 기간 설정 합리적,

C 언어의 우선 순위는 무엇입니까! x? C 언어의 우선 순위는 무엇입니까! x? Apr 03, 2025 pm 02:06 PM

논리적 비수기 (!)는 괄호 옆에 우선 순위를 갖습니다. 즉, 표현식에서는 대부분의 다른 연산자보다 우선합니다. 우선 순위를 이해하려면 끔찍한 암기가 필요할뿐만 아니라 더 중요한 것은 복잡한 표현에서 감지 할 수없는 오류를 피하기 위해 논리와 잠재적 인 함정을 이해하는 것입니다. 괄호를 추가하면 표현 의도를 명확하게하고 코드 선명도와 유지 관리를 개선하며 예상치 못한 동작을 방지 할 수 있습니다.

C 언어 기본값에 대한 모범 사례 C 언어 기본값에 대한 모범 사례 Apr 03, 2025 pm 03:48 PM

C 언어의 기본값 모범 사례 : 스위치 문의 끝에서 비교할 수없는 값에 대한 기본 처리로 배치하십시오. 프로그램 견고성을 향상시키기 위해 알려지지 않았거나 유효하지 않은 값을 처리하는 데 사용됩니다. 간결함을 유지하기 위해 케이스 브랜치와의 복제를 피하십시오. 가독성을 향상시키기 위해 기본 지점의 목적에 대해 명확하게 의견을 제시하십시오. 명확성을 유지하기 위해 한 경우에 여러 번의 기본값을 사용하지 마십시오. 기본 분기를 간결하게 유지하고 복잡한 작업을 피하십시오. 유지 유지 가능성을 향상시키기 위해 열거 값을 사례 조건으로 사용하는 것을 고려하십시오. 대형 스위치 명령문에서 여러 기본 분기를 사용하여 다른 상황을 처리하십시오.

C 언어 함수에서 가장 큰 공통 제수를 나타내는 방법에 대한 튜토리얼 C 언어 함수에서 가장 큰 공통 제수를 나타내는 방법에 대한 튜토리얼 Apr 03, 2025 pm 11:21 PM

C 언어에서 가장 큰 일반적인 제수를 효율적이고 우아하게 찾는 방법 : 나머지가 0이 될 때까지 나머지를 지속적으로 나누어서 위상 분할을 사용하여 두 가지 구현 방법이 제공됩니다. 재귀와 반복은 간결하고 명확하며 반복 구현이 더 높고 안정됩니다. 음수와 0을 처리하는 데주의를 기울이고 성능 최적화를 고려하지만 위상 부서 자체는 효율적입니다.

프론트 엔드 파일러 파일 읽기 : 먼저 인스턴스화 한 다음 읽어야하는 이유는 무엇입니까? 프론트 엔드 파일러 파일 읽기 : 먼저 인스턴스화 한 다음 읽어야하는 이유는 무엇입니까? Apr 04, 2025 pm 01:48 PM

프론트 엔드 개발에서 FilereAder 인스턴스화 및 파일 읽기와 관련하여 종종 사용자가 업로드 한 파일을 처리해야합니다. 사용

C/C에서 사용하지 않은 변수 : 왜 그리고 어떻게? C/C에서 사용하지 않은 변수 : 왜 그리고 어떻게? Apr 03, 2025 pm 10:48 PM

C/C 코드 검토에는 변수가 사용되지 않는 경우가 종종 있습니다. 이 기사는 사용하지 않은 변수에 대한 일반적인 이유를 탐색하고 컴파일러가 경고를 발행하는 방법과 특정 경고를 억제하는 방법을 설명합니다. 사용하지 않는 변수의 원인 코드에 사용되지 않은 변수에 대한 여러 가지 이유가 있습니다. 코드 결함 또는 오류 : 가장 직접적인 이유는 코드 자체에 문제가없고 변수가 전혀 필요하지 않거나 정확하게 사용되지 않기 때문입니다. 코드 리팩토링 : 소프트웨어 개발 프로세스 중에 코드는 지속적으로 수정되고 리팩토링되며 일부 중요한 변수는 뒤에 남겨져 사용되지 않을 수 있습니다. 예약 변수 : 개발자는 향후 사용을 위해 일부 변수를 전제로 할 수 있지만 결국 사용되지는 않습니다. 조건부 편집 : 일부 변수는 특정 조건 (예 : 디버그 모드)에있을 수 있습니다.

스트림에서 작동 할 때 RXJ 코드가 ​​적용되지 않는 이유는 무엇입니까? 스트림에서 작동 할 때 RXJ 코드가 ​​적용되지 않는 이유는 무엇입니까? Apr 04, 2025 pm 06:27 PM

RXJ를 사용하여 스트림에서 작동 할 때 코드가 적용되지 않는 이유는 무엇입니까? 학습 RXJS ...

RXJ를 사용하여 스트림 요소를 처리 할 때 출력이없는 이유는 무엇입니까? 운영자를 올바르게 사용하는 방법? RXJ를 사용하여 스트림 요소를 처리 할 때 출력이없는 이유는 무엇입니까? 운영자를 올바르게 사용하는 방법? Apr 04, 2025 pm 06:36 PM

RXJ를 사용하여 RXJ를 사용하여 스트림의 요소에서 작동 할 때의 문제에 대한 토론 ...

See all articles