随着PHP技术的普及,PHP各类应用框架也如雨后春笋般飞快的发展,与之相矛盾的是,一些所谓的高手经常把自己写的一个"框架"作为一个产品,实际生产行为中往往使用某些CMS或论坛程序作为核心开发真正的应用。

其实框架这概念,最早来源于C/S软件的应用,比较经典的有:微软的MFC、Java的Spring、Struts、Hibernate(也就是所谓的SSH)之类的框架,当然MFC纯粹是针对C/S类应用的,而后者针对或适用于Web应用,然而不管是那种,应用在Web上,都是有明显缺点的,但PHP一些框架往往都继承了这些思想,所以到目前为止,PHP类框架还都是止于模仿,当然也确实充分利用了PHP的一些特性,但真正在应用上,仍然显得做大项目不足,小项目多余的感觉,这也是PHP框架一般只作为"学者"使用,应用却并不是那么流行,很多所谓的高手也宁愿自己去写一个框架的原因。

那么,PHP框架发展到底存在哪些误区呢?

主要有下面几个方面:

1、把控制器写得过于强大,从而偏离了框架的本质

有些框架的控制器简直可以完全代替rewrite了,但是这样有意义么?完全就是一个无聊的闹剧而已,作为框架,最需要做的事情一是要简便易用,二是提供多一些针对Web真正实用、稳定、必要的库,(而实际当中,系统类库和业务类库往往是不同的)做过多年程序员的人都知道,老手和新手的区别在于,老手通常是有很多即时可用的代码,而新手往往要自己去找,如果框架不能让新手、老手都一样简便实现某功能,那么要框架来干吗?所以说,过分去弄控制器这一块,就偏离了原则,并且可能对开发造成一定的麻烦。

2、思想上仍然按照Java的那种老的一套思路,更适合于开发B/S应用的企业管理软件,而与Web的思路有点偏离

就拿权限与模块化思路来说,一般的框架都把app固定死了,而实际应用中,Web的APP通常是有三重的,具体为:administrator后台管理应用池,member 前台会员控制中心应用池,public公众浏览信息应用池。

传统的框架虽然有通过权限系统进行隔离,但却通常是把administrator、member、public三块应用都混在一块,没有对安全级别进行隔离,不管是思想上,还是对于安全管理,其实都是不利的,就拿传统的论坛程序来说,通常管理员要登录后台,都必须要重新输入一次密码,其实这样做对安全确实是有利的,但从抽像思维来看,这是对管理员的应用进行了分离,姑且把这些应用当作"池"的概念,因此不能用传统的B/S企业管理软件的思想去设计。

3、View的模式过于死板,很难用于商业应用

这里说的商业用户是指要向第三方发布的应用,就拿CakePHP来说,因为视图固定得太死,如果想设计成真正易于美工修改,又支持多模板模式的,那几乎是要完全抛弃它原有的view机制,很多东西太过学术化,而与实际应用有点出入,加上模板引擎的思想大家很难真正做到统一,从而使PHP框架全面混乱。(由于每个人的理解有偏差,所以出现这样的问题也是在所难免的)。

4、框架本身过于庞大,导致实际开发中,很多人对框架进行不同程度的精简,从而严重不统一

就拿官方的ZendFramework来说,其实一些核心文件加载时间就要0.05秒以上,用这种东西,假如要做一些高性能的系统,几乎是不可能的事情,但是在国外,因为对知识产品权比较尊重,所以未经授权是不会胡乱改人的系统的,因为此应之就出现了不少用于提升PHP运行性能的东西,但这终究不是最了的解决方法的。

终上所述,PHP框架要真正做到通用、实用,还需要很长时间,也许真正成熟之后,我们会后台编译在PHP扩展里的真正高性能PHP框架,(也就是说还是想把它做成组件的形式来使用)。

但给初学者的建议,并不是说不主张学习或使用框架,相反,要多些去研它的思想内涵,此外大多数框架程序都充分利用PHP的一些特性,通过学习框架能发现不少东西,但是真正优秀的程序员,最终需要的还是自己的灵魂,多些去想为什么?如何才能更方便,如何才能让自己的"代码库"适应性更强,当想通了这一点,其实一切东西都变得不再那么重要了。

【编辑推荐】

【责任编辑:王晓东 TEL:(010)68476606】

点赞 0

最难php框架,PHP框架发展存四误区 死穴不除难成大器相关推荐

  1. Atitit. Attilax企业框架 AEF的发展里程总结

    Atitit. Attilax企业框架 AEF的发展里程总结 1. Attilax企业框架and框架发展思想 1 2. AEF框架 2 2.1. 多语言支持,涉及的语言 java ,c# php py ...

  2. DL框架之Keras:深度学习框架Keras框架的简介、安装(Python库)、相关概念、Keras模型使用、使用方法之详细攻略

    DL框架之Keras:深度学习框架Keras框架的简介.安装(Python库).相关概念.Keras模型使用.使用方法之详细攻略 目录 Keras的简介 1.Keras的特点 2.Keras四大特性 ...

  3. 技术帖:砖混、砖木、钢混、板楼、塔楼、框架、框架剪力墙等概念之区别优劣...

    技术帖:砖混.砖木.钢混.板楼.塔楼.框架.框架剪力墙等概念之区别优劣 http://bbs.fdc.com.cn/showtopic-16331376.aspx天天听KFS说这些词,资料上写这些词, ...

  4. Java日志框架 -- 日志框架介绍、日志门面技术、JUL日志(JUL架构、JUL入门示例、JUL日志级别、JUL日志的配置文件)

    1. 日志的概念 日志文件是用于记录系统操作事件的文件集合,可分为事件日志和消息日志.具有处理历史数据.诊断问题的追踪以及理解系统的活动等重要作用. 2. Java日志框架 问题: 控制日志输出的内容 ...

  5. 框架 - SpringMVC框架

    框架 - SpringMVC框架 第一章 SpringMVC概述 1.1 SpringMVC简介 1.2 SpringMVC 优点 1.3 第一个注解的 SpringMVC程序 1.4 SpringM ...

  6. 微服务框架-基础框架

    微服务框架-基础框架 转自:http://www.open-open.com/lib/view/open1479194438544.html 对于微服务基础框架可以看作是微服务治理架构的核心内容,包括 ...

  7. Python攻城师————前端学习(jQuery框架、第三方框架bootstrap框架)

    今日学习目标 继续学习jQuery框架剩余的内容. 文章目录 今日学习目标 学习内容 一.jQuery操作标签 class操作 样式操作 位置操作 文本值操作 属性操作 文档处理操作 二.jQuery ...

  8. ssm框架简单框架流程

    ssm框架简单框架流程 1.框架搭建步骤 一:mybatis部分 1.建实体类(pojo层):起名类名与表名一致,但类开头大写:如数据库某表books,类名Books 2.写接口进行一些业务操作(da ...

  9. 软件测试框架——自动化测试框架(专题)

    软件测试框架 --自动化测试框架 专题关键字: 框架( formwork ).自动化.自动化测试框架.专题 内容简介 本专题讲解什么是测试框架,以及什么是自动化测试框架?在了解框架技术的前提下具体介绍 ...

最新文章

  1. Spring Boot 2.4 对多环境配置的支持更改
  2. 查看linux下各数据类型的大小
  3. Random类、String类的一些常用方法
  4. sql语句中`和'两个符号的区别
  5. MyBatis 源码解读-typeHandlerElement()
  6. hadoop--MapReduce_WordCount词频统计案例
  7. 写给社区的回顾和展望:TiDB 2019, Level Up !
  8. Java基础---Java---IO流-----对象的序列化、管道流、RandomAccessFile、数据类型的流对象DataStream、ByteArrayStream
  9. log添加 oracle redo_Oracle更改redo log大小 or 增加redo log组
  10. 数学计算机学具制作,小学五年级数学学具怎么?
  11. python 谷歌翻译
  12. steam官网网页服务器打不开,steam打不开,教您怎么解决steam打不开
  13. Java:萌新之路——银行账户管理系统
  14. 工业大数据收集及预测建模方法(南京大学-宋哲博士分享)- 个人总结
  15. 电大形考作业c语言答案,题目精编国家开放大学电大《管理信息系统》形考网络课作业1-4试题及答案...
  16. html5在线学习系统,Canvas LMS 在线学习管理系统
  17. 中断系统的相关知识(二)(可位寻址、不可位寻址)
  18. PHP文件绕过后缀执行配置
  19. 阿里区块链“新路线” |链捕手
  20. iOS开发的Sketch之旅

热门文章

  1. matlab 图像仿射做差分,基于MATLAB的等差分纬线多圆锥投影变换
  2. 【JS里面使用var声明变量存在的三个问题】
  3. 楚列斯基分解法、求矩阵范数的C++实现
  4. 服务器发送了 HTTP 状态代码 401: Unauthorized
  5. 初中计算机基础考试试题及答案,计算机基础考试试题及答案(三)
  6. Android智能电视应用程序开发浅谈(三)
  7. html练习--写信
  8. ESXi通过命令行创建并直通RDM磁盘
  9. flink+drools动态规则示例之温度跳变告警
  10. Flutter 入门指北(Part 2)之基础部件