热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PHP开发中的三个世界-PHP源码

ec(2);  现在在PHP的框架上面讨论很多,我觉得这里面主要有两个问题:首先盲目崇拜框架,认为采用框架设计才是正统,否则就是不入流、是菜鸟。其次是模仿Java的痕迹很重。我并不是说模仿是一件坏事,这里指的是没有经过认真思索,未曾考虑框架或某些设计的原理与目的、承接项目实际情况和Java与PHP之间的异同而盲目进行的一些“模


现在在PHP的框架上面讨论很多,我觉得这里面主要有两个问题:首先盲目崇拜框架,认为采用框架设计才是正统,否则就是不入流、是菜鸟。其次是模仿 Java 的痕迹很重。我并不是说模仿是一件坏事,这里指的是没有经过认真思索,未曾考虑框架或某些设计的原理与目的、承接项目实际情况和 Java 与 PHP 之间的异同而盲目进行的一些“模仿”工作。《PHP 开发中的三个世界》一文就是针对其中“项目的实际情况”来写的一篇文章,着重讨论了在不同开发领域进行 PHP 开发的一些特点。若有不当之处,还请方家指正。

注:所写内容均为个人感想,转载请注明出处。


PHP 开发中的三个世界


在 PHP 开发领域,不断在讨论讨论 OO ,讨论框架、讨论设计模式、讨论 MVC 模型,讨论这些所带来的种种好处。我不对这些好处进行否认,我只是认为不能盲目跟随某种开发方式,一切方法都是有适用范围的, PHP 开发也不例外。PHP 开发根据受众、服务目标等可以大致可以分为三种不同的开发领域:行业商业软件通用共享软件私有专用软件。在这些不同的领域,所主要采用的开发手段也是有所区别的。明确自己产品所在领域并确定下来一种开发方法是很有必要的。需要说明的是这个三个分类严格说来并不是完全并列,泾渭分明,希望这不会给大家带来困扰,领会意思即可。:)

另限于个人的水平及观点的狭隘,有些看法难免有失偏颇甚至偏激,还望方家不吝赐教。


首先来说一下行业商用软件
这类软件主要面向特定行业或企业的某种应用,项目设计较为复杂。一般为某个开发公司独立承接,几乎没有竞争对手。目前主要以 CRM、CMS、OA 等为代表。这类软件的客户并不关心系统的运行速度有多快,而是关心这个系统能否协调一致完成所需要的功能。由于是面向特定的客户,所以该类软件使用面较为狭窄,若换了另外一家客户通常就不能很好的运行(这里的运行并非指代码的执行,而是指功能的实现),就必须推倒重来。为了减少在开发不同系统当中所作无谓的基础性的重复劳动,我们就必须把这些不同的系统应用中相同的部分给提取出来。这些相同的部分既含有代码技术上的相似性,也包含设计流程上相似性。这是一种将问题进行抽象的过程。我们现有的这些框架、模型就是前人在这些抽象过程的劳动成果。由于几乎每个 Java 项目通常都是较为大型的复杂的应用,所以我们在这些项目中处处可见框架,处处可见模式。你不采用这种开发方式,那就几乎无法前行。PHP 在开发这类应用时是跟 Java 很相似的,唯一不同的就是各自运行环境(主要是指各自的语言解释器,下同)不同。PHP 是一种脚本语言,其支持各种 OO 语言特性的代价很沉重。无论是在空间还是在时间上。所幸对于这类行业商用软件性能是次要的,并且可以自己决定运行环境,因此采用对 OO 特性支持良好的 PHP5 是必然的选择。而且采用一些框架也是必须的。

再来说说通用共享软件
这个概念从传统桌面型共享软件的概念而来,它的主要特点就是客户(包括潜在的客户)众多,同一类型的软件用户的选择也较多,竞争较为激烈。这类软件目前以论坛社区程序为代表。为了赢得客户,那你必须要做得比一般竞争对手更好。对这类软件来说,竞争主要在一下几个方面:

1、界面。界面是你的客户(包括客户的客户)对你产品的第一印象。因此界面必须要友好。界面不单指外观,还包括可操作性。界面必须要考虑到大多数人的习惯,操作必须要简单、顺手。外观虽然是萝卜白菜,但你也必须留一个选择权(接口)给客户,让客户能非常方便地修改使用。

2、性能。良好的界面当然会给你的产品加分。但在这可以 Ctrl+C 和 Ctrl+V 的世界,再优秀的界面都会被竞争对手瞬间所“学习”。如果说界面是第一印象,那么性能将是致命的考察。因为界面可以更换,但你不能指望客户自己去完善代码。在 PHP 开发中,性能很大程度上是指代码的运行速度,另外一个重要的表现就是对系统资源的损耗程度。每个处理进程的资源占有率越低,系统就越有时间来同时处理更多的请求。这些都是一个细微之处见真章的功夫。希望有机会再和大家详细探讨。但其中我个人有个大致的原则就是避免使用类。PHP中的类真是性能杀手。避免使用类的直接后果就是避免使用框架。有人说这样做会影响开发效率。我承认,是可能会造成一些这样的效果。但我认为,效率分两种:开发效率和运行效率。在行业商用软件中我们这样做是不合适的,但在通用共享软件里面,我们的竞争对手很多。况且客户才不会管你使用什么框架、采用什么模式,客户只关心他们自己的体验。雨和熊掌不可兼得,我们必须要舍弃一点开发效率来保证运行效率。这也是不得已而为之。

3、兼容性。

<

推荐阅读
  • PHP 编程疑难解析与知识点汇总
    本文详细解答了 PHP 编程中的常见问题,并提供了丰富的代码示例和解决方案,帮助开发者更好地理解和应用 PHP 知识。 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 在前两篇文章中,我们探讨了 ControllerDescriptor 和 ActionDescriptor 这两个描述对象,分别对应控制器和操作方法。本文将基于 MVC3 源码进一步分析 ParameterDescriptor,即用于描述 Action 方法参数的对象,并详细介绍其工作原理。 ... [详细]
  • MySQL索引详解与优化
    本文深入探讨了MySQL中的索引机制,包括索引的基本概念、优势与劣势、分类及其实现原理,并详细介绍了索引的使用场景和优化技巧。通过具体示例,帮助读者更好地理解和应用索引以提升数据库性能。 ... [详细]
  • 本文探讨了如何在 PHP 的 Eloquent ORM 中实现数据表之间的关联查询,并通过具体示例详细解释了如何将关联数据嵌入到查询结果中。这不仅提高了数据查询的效率,还简化了代码逻辑。 ... [详细]
  • Startup 类配置服务和应用的请求管道。Startup类ASP.NETCore应用使用 Startup 类,按照约定命名为 Startup。 Startup 类:可选择性地包括 ... [详细]
  • ASP.NET MVC中Area机制的实现与优化
    本文探讨了在ASP.NET MVC框架中,如何通过Area机制有效地组织和管理大规模应用程序的不同功能模块。通过合理的文件夹结构和命名规则,开发人员可以更高效地管理和扩展项目。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 本文探讨了dbforms框架的核心设计理念及其背后的技术原理,详细分析了该框架如何通过其独特的设计模式来简化开发流程,并为开发者提供了优化使用方法的建议。 ... [详细]
  • 本文探讨了在 ASP.NET MVC 5 中实现松耦合组件的方法。通过分离关注点,应用程序的各个组件可以更加独立且易于维护和测试。文中详细介绍了依赖项注入(DI)及其在实现松耦合中的作用。 ... [详细]
  • 深入理解ASP.NET MVC中的_ViewStart.cshtml
    本文介绍了_ViewStart.cshtml文件在ASP.NET MVC 3.0及以上版本中的作用和使用方法。该文件位于Views目录下,主要用于统一配置视图布局和其他全局设置。 ... [详细]
  • FineUI 是一款基于 jQuery 的专业级控件库,专为 ASP.NET WebForms 和 MVC 开发设计。它提供了丰富的用户界面组件,简化了复杂 Web 应用程序的开发过程。 ... [详细]
  • Struts与Spring框架的集成指南
    本文详细介绍了如何将Struts和Spring两个流行的Java Web开发框架进行整合,涵盖从环境配置到代码实现的具体步骤。 ... [详细]
  • 本文作者分享了在阿里巴巴获得实习offer的经历,包括五轮面试的详细内容和经验总结。其中四轮为技术面试,一轮为HR面试,涵盖了大量的Java技术和项目实践经验。 ... [详细]
  • Java项目分层架构设计与实践
    本文探讨了Java项目中应用分层的最佳实践,不仅介绍了常见的三层架构(Controller、Service、DAO),还深入分析了各层的职责划分及优化建议。通过合理的分层设计,可以提高代码的可维护性、扩展性和团队协作效率。 ... [详细]
author-avatar
杨俊其632
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有