PHP的缺点
来源:互联网 发布:汽车电脑编程设备 编辑:程序博客网 时间:2024/06/02 07:31
PHP的缺点
时间:2011-08-09 15:11:55 来源:第二电脑网 作者:第二电脑网
PHP对于global变量的处理,我还不是很确定,需要进一步求证。
1.3 PHP的缺点
虽然作者非常欣赏PHP(否则也就不会有这本书),但是不可否认,PHP的缺点也是相当明显的。
也许有经验的PHP程序员最感到痛苦的地方是PHP的解释运行机制。这种运行机制使得每个PHP页面被解释执行后,所有的相关
资源都会被回收。也就是说,PHP在语言级别上没有办法让某个对象常驻内存。在PHP中,所有的变量都是页面级的,无论是全局变
量,还是类的静态成员,都会在页面执行完毕后被清空。以JSP为例,在JSP中,Java Bean的scope有四种有效值:Page、
Application、Session、Request,分别对应页面、程序、会话、请求四种生存期。但在PHP中,只有Page一种生存期。
在PHP中,如果需要在页面之间共享数据,需要手动将变量保存到预定义的全局变量$GLOBALS或$_SESSION中。PHP会将这些变
量保存在某个文件中,以便下次执行页面时读取。但是,这种方式存在着极大的限制,除了效率的低下外,它还无法保存引用外部
资源的变量,例如文件、Socket、数据库连接等,而正是这些资源最需要被缓存。
这导致了许多高级的模式和技术无法使用。例如,即使是最简单的Singleton模式也无法在PHP中被应用。虽然可以使用PHP写
出Singleton的代码,但是由于PHP中没有真正全局的static变量,所以每次页面被执行时,都会重新建立新的对象,这样也就完全
失去了Singleton的意义。这也导致复杂的OR Mapping技术难以应用,因为没有对象的缓存机制,OR Mapping的开销已经使这种技
术失去了意义。这又导致传统的MVC架构在PHP中无法实现。
关于PHP的这一弊病和相关的解决技巧,在下文还会提到。
PHP其他一些为人垢病的地方包括:
1).缺乏对名字空间的支持。
名字空间(namespace)是开发大型应用程序时非常有用的特性,它能够代码中的名字分配到不同的空间中,从而避免它们互
相冲突。如果没有名字空间,在使用第三方库的时候,很容易遇到名字冲突的问题,即不同的类、接口、函数或全局变量使用了同
样的名字。C++/Java/C#等语言都支持名字空间。名字空间本来是PHP5开发计划的一部分,但是由于这一特征对性能造成了明显的
影响,最终在发布版中被取消了。因此,直到现在,PHP程序员们仍然不得不使用非常长的名字(诸如Canata_Util_ConvertHtml())来避免名字冲突。(www.002pc.com)
2).缺乏对Unicode的支持。
PHP5 仍然没有添加对Unicode的内置支持,仅仅是增加了一些多字节字符串(Multibyte String)处理函数,而这些函数需要
在编译时手工指定才能够打开。据说Unicode将在PHP 6中得到完整的支持。
3).缺乏统一的命名规范。
和Java不同,PHP没有统一的命名规范。因此,PHP程序员随心所欲地使用他愿意使用的任何命名规范。象converttohtml()、
ConvertToHtml()和convert_to_html()这样的命名规范往往同时被使用。对于程序员自己来说,只要坚持使用一种命名规范,倒不是什么太大的问题;但是如果需要用到第三方库的时候,这种经验就不那么令人愉快了。
4).缺乏标准框架。
到目前为止,PHP社区没有出现一套统一的、完整的Web开发框架,象Struts或Ruby on Rails那样。PHP程序员只有可复用的函
数和类。这也许要部分地归因于PHP本身的特性,由于它无法实现有效的缓存机制,因此也无法构建传统的MVC框架
。
来源:http://www.002pc.com/master/College/Programming/PHP/3981.html
时间:2011-08-09 15:11:55 来源:第二电脑网 作者:第二电脑网
PHP对于global变量的处理,我还不是很确定,需要进一步求证。
1.3 PHP的缺点
虽然作者非常欣赏PHP(否则也就不会有这本书),但是不可否认,PHP的缺点也是相当明显的。
也许有经验的PHP程序员最感到痛苦的地方是PHP的解释运行机制。这种运行机制使得每个PHP页面被解释执行后,所有的相关
资源都会被回收。也就是说,PHP在语言级别上没有办法让某个对象常驻内存。在PHP中,所有的变量都是页面级的,无论是全局变
量,还是类的静态成员,都会在页面执行完毕后被清空。以JSP为例,在JSP中,Java Bean的scope有四种有效值:Page、
Application、Session、Request,分别对应页面、程序、会话、请求四种生存期。但在PHP中,只有Page一种生存期。
在PHP中,如果需要在页面之间共享数据,需要手动将变量保存到预定义的全局变量$GLOBALS或$_SESSION中。PHP会将这些变
量保存在某个文件中,以便下次执行页面时读取。但是,这种方式存在着极大的限制,除了效率的低下外,它还无法保存引用外部
资源的变量,例如文件、Socket、数据库连接等,而正是这些资源最需要被缓存。
这导致了许多高级的模式和技术无法使用。例如,即使是最简单的Singleton模式也无法在PHP中被应用。虽然可以使用PHP写
出Singleton的代码,但是由于PHP中没有真正全局的static变量,所以每次页面被执行时,都会重新建立新的对象,这样也就完全
失去了Singleton的意义。这也导致复杂的OR Mapping技术难以应用,因为没有对象的缓存机制,OR Mapping的开销已经使这种技
术失去了意义。这又导致传统的MVC架构在PHP中无法实现。
关于PHP的这一弊病和相关的解决技巧,在下文还会提到。
PHP其他一些为人垢病的地方包括:
1).缺乏对名字空间的支持。
名字空间(namespace)是开发大型应用程序时非常有用的特性,它能够代码中的名字分配到不同的空间中,从而避免它们互
相冲突。如果没有名字空间,在使用第三方库的时候,很容易遇到名字冲突的问题,即不同的类、接口、函数或全局变量使用了同
样的名字。C++/Java/C#等语言都支持名字空间。名字空间本来是PHP5开发计划的一部分,但是由于这一特征对性能造成了明显的
影响,最终在发布版中被取消了。因此,直到现在,PHP程序员们仍然不得不使用非常长的名字(诸如Canata_Util_ConvertHtml())来避免名字冲突。(www.002pc.com)
2).缺乏对Unicode的支持。
PHP5 仍然没有添加对Unicode的内置支持,仅仅是增加了一些多字节字符串(Multibyte String)处理函数,而这些函数需要
在编译时手工指定才能够打开。据说Unicode将在PHP 6中得到完整的支持。
3).缺乏统一的命名规范。
和Java不同,PHP没有统一的命名规范。因此,PHP程序员随心所欲地使用他愿意使用的任何命名规范。象converttohtml()、
ConvertToHtml()和convert_to_html()这样的命名规范往往同时被使用。对于程序员自己来说,只要坚持使用一种命名规范,倒不是什么太大的问题;但是如果需要用到第三方库的时候,这种经验就不那么令人愉快了。
4).缺乏标准框架。
到目前为止,PHP社区没有出现一套统一的、完整的Web开发框架,象Struts或Ruby on Rails那样。PHP程序员只有可复用的函
数和类。这也许要部分地归因于PHP本身的特性,由于它无法实现有效的缓存机制,因此也无法构建传统的MVC框架
。
来源:http://www.002pc.com/master/College/Programming/PHP/3981.html
- PHP的缺点
- 回复《PHP的弱点,缺点是什么?》
- 回复《PHP的弱点,缺点是什么?》
- 我们一起来认识PHP的缺点
- PHP语言的优点及缺点
- 优点使用的PHP和缺点
- 优点使用的PHP和缺点
- PHP语言的优点及缺点
- php优点和缺点
- 简评用PHP开发大型系统的缺点
- php命名空间的设计思想和缺点
- 分层的缺点、面向对象的缺点
- 中国企业的的缺点
- 校友录的缺点
- 配置文件的缺点
- C#的缺点是什么
- HDLC的缺点
- MessageBox的缺点
- 用htmlparser 解析本地html文件
- 10.3 Point(点)类 的多层派生
- ORA-00313 ORA-00312 ORA-27037
- JavaScript面向对象15分钟教程
- 回顾关于游戏测试
- PHP的缺点
- Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag
- 创业初期,单身vs已婚
- 2012C++程序设计实验报告【12.1】
- android程序完全退出步骤
- 入侵肉鸡,手动建立后门超级隐藏账户的方法
- 支持同一页面多次使用 jq.contentShown插件全新升级,带来最全的演示,最完整的介绍。
- 十二周任务四
- 数据库数据导出成excel,excel数据导入数据库