PHP模仿不了Java——PHP下目标指向编程的局限性

原创 2008年10月03日 16:36:00
PHP5已经支持了接口、抽象类、类成员访问权限等目标指向语言的功能,表面上似乎PHP也可以像Java那样写一个目标指向语言的程序。有很多框架也都相继支持了O/R、MVC等功能。但是,我个人觉得,这种让PHP程序变Java的照猫画虎,将会牺牲整体性能。

PHP支持了很多目标指向语言的语法不假,但还是要清楚的看到,PHP底层函数保存数据的格式人就是基本型+数组唱主角。
例如,HTTP请求参数,在PHP中可以用$_REQUEST得到,而$_REQUEST本身就是一个数组。现在要实现MVC,Servlet下面是HttpServletRequest型的实例,用getParameter提取请求参数,在Java下,他们本身就是用目标组合起来的数据。
现在到PHP了,如果也用get**,怎么办?把$_REQUEST封装起来,再根据每次请求生成实例?那么,直接用$_REQUEST就好了,还无端的加个婆婆干什么?访问量大了,这个婆婆肯定要增加无端的负荷。
表面上可能更像MVC了,但这不是违背了KISS的基本原则吗?

PHP对目标指向到底支持到什么程度?我想要以工厂模式直接执行某个目标实例的方法,版本5.3以上的PHP中,call_user_func函数虽然可以做到,但是跟执行普通函数一样,没有了实例的概念。这决定了,PHP在封装接口的时候,不可能像Java那样要啥来啥。

Discuz、OpenPNE等等,这些经过验证的,性能出色的web系统都在用PHP4的基本概念。
我也曾经参加过一个把PHP写成目标指向程序的工程,最后到了快完成的阶段,终于出现了性能瓶颈。最后大家也在总结失败原因,硬搬OOP是罪魁之一。

我不是否定OOP,而是想说,巧妙运用OOP可以提高开发效率,但是,PHP不是Java,在Java上已经证实了成功的案例,照搬到PHP上未必好用。用PHP实现OOP、MVC等概念,应该有PHP自己的特色。必须要根据PHP语言特点来实现有PHP特色的目标指向语言程序。
就像美国的民主无法copy到中国,而中国的管理体制copy到美国也不可能让他摆脱金融危机一样——自己的路,只能自己走。
PHP开发也得有自己的OOP风格。

PHP 相当于JavaBean的代码

  • shaozengwei
  • shaozengwei
  • 2014年09月26日 17:46
  • 529

java模拟php的md5加密算法(只在只有数字的情况下测试通过)

public static void main(String[] args) {     try {       System.out.println(getMd5("123".getBytes(...
  • u012108514
  • u012108514
  • 2017年09月07日 11:01
  • 118

php 模仿百度蜘蛛采取网页信息

function vspider_get($url){         $ch2 = curl_init();         $user_agent = "Mozilla/5.0 (comp...
  • xiaoxiaohui520134
  • xiaoxiaohui520134
  • 2016年06月12日 20:03
  • 653

用java编程模仿DOS下的dir命令,列出某个目录下的内容

用递归的方法实现。 import java.io.File; import java.util.Scanner; public class ListFiles { public static ...
  • wjb0123456
  • wjb0123456
  • 2017年05月28日 11:30
  • 721

网站开发基础PHP+JAVA实现静动分离

1.php开发网站的优势          PHP是一种强大的CGI脚本语言,语法混合了C、Java、Perl和PHP式的新语法,执行网页速度比CGI、Perl和ASP更快,而且内嵌Zend加速引擎,...
  • reaganjava
  • reaganjava
  • 2017年08月11日 14:47
  • 1067

PHP 伪变量$this

this是指向当前对象的指针 [php] view plaincopyprint?    class human{              pu...
  • zm_bingxindan
  • zm_bingxindan
  • 2014年06月22日 22:51
  • 723

PHP中的$this到底指向谁?

class A { public function test(){ echo ''; var_dump($this); echo ''; $this->testB(); } } c...
  • justflyhigh
  • justflyhigh
  • 2013年09月09日 17:10
  • 3796

windows下php的exec函数执行不成功的另一种原因

今天忙活一天了,想用php调用一个exe程序。执行后一直返回1(返回0是成功),也看不到任何输出,$output也看不到东西。 从网上看了, 大部分文章都说是cmd.exe的权限问题、php开启了s...
  • u014611932
  • u014611932
  • 2018年01月25日 17:46
  • 91

php - 多个变量指向同一个引用($b = &$a)

引用是什么? 引用就是多个变量指向同一个内存区域地址。如我们经常用的实例一个类,就是内存中开辟一了一个区域存储实例的类,实例赋值给变量就是让这个变量指向这个内存区域。多个变量指向同一个引用有什么好处...
  • u014559227
  • u014559227
  • 2017年06月02日 11:51
  • 653

php程序员之后的目标在哪儿?

网上有人就总结了一些发展路线: 学习PHP基本功很重要。最好有数据结构的学习经历。 对于1,2年的新手来说。在2年内必须完全掌握smarty+pear+adodb+xml+ajax 工具类必须熟练掌...
  • u014234850
  • u014234850
  • 2015年01月23日 23:32
  • 379
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:PHP模仿不了Java——PHP下目标指向编程的局限性
举报原因:
原因补充:

(最多只允许输入30个字)