PHP组件化开发

简介: 设计思想中有两种极端:大而全、小而美。一般我们常用的库是小而美,用的框架是大而全。从Symfony实现Component式开发开始,框架的组件化逐渐成为趋势。我们可以任意的组合各种Compoent来形成自己的PHP框架,比如B团队出的Db及ORM引擎、B团队出的缓存引擎、E团队出的Route映射引擎、C团队出的DI、D团队出的MVC、X团队的单元测试工具。

设计思想中有两种极端:大而全、小而美。

一般我们常用的库是小而美,用的框架是大而全。从Symfony实现Component式开发开始,框架的组件化逐渐成为趋势。我们可以任意的组合各种Compoent来形成自己的PHP框架,比如B团队出的Db及ORM引擎、B团队出的缓存引擎、E团队出的Route映射引擎、C团队出的DI、D团队出的MVC、X团队的单元测试工具。Composer出现后,提供了高度便捷性,加速了这种趋势。

Yii这个框架是典型的全栈式框架,常规应用开发所需功能几乎都揉和到一个项目中。yii2到现在,它的核心实现还是以传统Web应用场景为重心。但这只是他的形,他的核心思想里是组件化的,有Component这样的完善机制,只是没有拆开成各个子项目而已。

如何将Yii2这样的项目拆成Component式的子项目呢,你可以自己想想!

代码重用据说是OOP思想最想要解决的问题?如果我们写出的每个功能,抽象的库、具体的业务模块,都可以实现最大化独立和重用,似乎是很美好的一件事情,借助于开源的趋势,若干年的积累后,只要像搭积木一样组合一下,就可以完成满足实际需求的应用系统。

请注意上文中的“搭积木”这个词,搭积木源自于孩童时的游戏,不同的积木组合可以拼成各种房子、各种车等,但积木组合出来的都是人所处环境的实物,和应用系统这种存在于计算机世界的事物在目前的认知上是完全不同的体系,搭积木这个词用在应用开发上,合适吗?

通常我们的结论是这样:代码可以以库的形式重用,重复的功能模块式开发和引用,但不同的应用有不同的场景,还是需要以比较“巧妙”的方式去定制的,比如“钩子”、“行为”、“事件”、“插件”等。

话再说回来,组件化可以到什么程度呢?

市面上成功的CMS等系统都通过“插件”或“扩展”,配合“应用市场”建立了比较强大的开发者生态圈,通过“巧妙”的机制实现具体场景的定制化,满足用户的需求。

举个简单的例子来说,TP的Model是这样的:

在具体的Model里如UserModel,覆盖

// 删除数据前的回调方法
    protected function _before_delete($options) {}
    // 删除成功后的回调方法
    protected function _after_delete($data,$options) {}

这两个方法以实现数据删除前和删除后触发的关联操作,但Yii中,只要继承Component基类实现的类,都可以使用事件和行为来扩展原来的逻辑,而且可从外部来定义,非常灵活。

yii中的用法大致为:

$model = new User;

$model->on(‘before_delete’, $callabe, $data);

TP的控制器中也有钩子,应该也算是一种实现方式吧。

库Component化、业务功能以模块化的方式实现,就可以实现扩展和定制的无限可能性。

目录
相关文章
ly~
|
9天前
|
存储 供应链 小程序
除了微信小程序,PHP 还可以用于开发哪些类型的小程序?
除了微信小程序,PHP 还可用于开发多种类型的小程序,包括支付宝小程序、百度智能小程序、抖音小程序、企业内部小程序及行业特定小程序。在电商、生活服务、资讯、工具、娱乐、营销等领域,PHP 能有效管理商品信息、订单处理、支付接口、内容抓取、复杂计算、游戏数据、活动规则等多种业务。同时,在企业内部,PHP 可提升工作效率,实现审批流程、文件共享、生产计划等功能;在医疗和教育等行业,PHP 能管理患者信息、在线问诊、课程资源、成绩查询等重要数据。
ly~
42 6
|
11天前
|
设计模式 算法 数据库连接
PHP中的设计模式:提高代码的可维护性与扩展性本文旨在探讨PHP中常见的设计模式及其应用,帮助开发者编写出更加灵活、可维护和易于扩展的代码。通过深入浅出的解释和实例演示,我们将了解如何使用设计模式解决实际开发中的问题,并提升代码质量。
在软件开发过程中,设计模式是一套经过验证的解决方案模板,用于处理常见的软件设计问题。PHP作为流行的服务器端脚本语言,也有其特定的设计模式应用。本文将重点介绍几种PHP中常用的设计模式,包括单例模式、工厂模式和策略模式,并通过实际代码示例展示它们的具体用法。同时,我们还将讨论如何在实际项目中合理选择和应用这些设计模式,以提升代码的可维护性和扩展性。
|
3月前
|
安全 IDE 编译器
深入理解PHP 7的新特性及其对现代Web开发的影响
【7月更文挑战第30天】本文将深入探索PHP 7版本中引入的关键新特性,并分析这些改进如何优化现代Web开发实践。通过对比PHP 5和PHP 7的性能差异,我们将揭示PHP 7如何提升应用响应速度和资源利用效率。此外,本文还将讨论PHP 7对开发者工作流程的影响,包括新的语言特性、错误处理机制以及内置函数的增强,旨在为读者提供全面了解PHP 7所带来的变革性影响。
|
3月前
|
安全 API PHP
深入理解PHP 7的新特性及其对现代Web开发的影响
【7月更文挑战第29天】本文将探索PHP 7版本引入的一系列新特性,并分析它们如何革新了现代Web开发。我们将从性能提升、语言特性增强、以及面向对象编程的改进等方面进行详细讨论,旨在为开发者提供一份全面的PHP 7新特性指南,帮助他们更好地利用这些新工具优化和加速Web应用的开发。
|
3月前
|
安全 编译器 API
深入理解PHP 8的新特性及其对现代Web开发的影响
【7月更文挑战第29天】随着PHP 8的发布,这个广受欢迎的服务器端脚本语言迎来了重大更新。本文将深入探讨PHP 8引入的关键新特性,包括JIT编译器、联合类型、命名参数、匹配表达式以及错误处理改进等,并分析这些变化如何影响现代Web开发实践。我们将通过具体示例和代码片段,展示这些新特性如何提升性能、增强类型安全和支持更简洁的代码编写,同时讨论它们对现有PHP项目的迁移和维护的潜在影响。
34 2
|
3月前
|
存储 设计模式 安全
PHP 7新特性及其对现代Web开发的影响
随着PHP 7的发布,这一广泛使用的服务器端脚本语言带来了显著的性能提升和新的编程特性。本文将深入探讨PHP 7中的关键更新,包括性能优化、类型声明、异常处理改进以及匿名类等,并分析这些变化如何影响现代Web开发的实践和模式。通过具体案例,我们将了解开发者如何利用这些新特性来编写更快、更安全、更易维护的代码。 【7月更文挑战第28天】
35 3
|
3月前
|
安全 IDE 测试技术
PHP 7新特性及其对现代Web开发的影响
【7月更文挑战第25天】在探索PHP最新版本的旅程中,我们将深入其核心,揭开PHP 7的新特性如何革新现代Web开发的神秘面纱。从性能优化到语法改进,本文将引导你领略PHP 7带来的变革,同时探讨这些变化如何影响开发者的日常编码实践和项目架构设计。
36 4
|
3月前
|
数据挖掘 编译器 PHP
PHP 8新特性解析及其对现代Web开发的影响
随着PHP 8的发布,这一广泛使用的服务器端脚本语言带来了一系列创新特性,旨在提升性能、增强语法的易用性以及支持最新的编程范式。本文将深入探讨PHP 8中的JIT编译器、联合类型、匹配表达式等关键特性,并通过实际案例分析它们如何优化代码结构、提高执行效率,并简化日常开发工作,从而全面评估PHP 8对现代Web开发实践的深远影响。
|
3月前
|
安全 算法 编译器
PHP 8的新特性及其对现代Web开发的影响
随着PHP 8的发布,这个广泛使用的服务器端脚本语言带来了一系列令人兴奋的更新和改进。本文将深入探讨PHP 8中引入的关键新特性,以及这些变化如何影响现代Web开发实践。我们将通过实际案例和性能数据来分析这些新特性的实际应用,为开发者提供升级和采纳新版本的见解。
|
3月前
|
安全 算法 编译器
PHP 8新特性及其对现代Web开发的影响
随着PHP 8的发布,这一广泛使用的编程语言带来了一系列激动人心的新特性,旨在提高性能、增加语言表现力并简化代码。本文将深入探讨PHP 8中引入的关键改进,包括JIT编译器、联合类型、匹配表达式、命名参数、错误处理机制等,以及这些新特性如何影响现代Web开发实践。我们将通过实际示例和案例分析,展示开发者如何利用这些新工具来构建更高效、可维护和安全的应用程序。