PHP的十个不容忽视的问题1.PHP是解释性语言而不是一种编译语言【E800编译】首先我们从技术角度来解释这一点。编译语言在执行代码前,要将源代码转换成一类机器代码。解释性语言可以从源文本中直接执行代码,而不需要编译。PHP从2000年发布的PHP4开始就不是解释性语言。当一个PHP脚本被执行的时候,首先PHP源代码由Zend引擎编译成名为Zendopcodes的机器代码。这些代码保存在RAM中。然后执行opcodes运行真正的脚本。因此,PHP实际上和Java,C#等语言一样是编译语言。否则,它的执行会很慢。通常编译的PHP机器代码不需要保存在文件。但是如果这些代码对你很重要,还可以用一些扩展将编译的PHP代码输出到文件中。默认情况下,如果你再次运行相同脚本,每次执行PHP
源代码前都要将其重新编译到RAM中。不过,很多opcode缓存扩展可以将编译的PHPopcodes编译到共享内存中,这样下次其他Web服务器请求执行PHP脚本时,就不再需要编译源代码而只需直接从共享缓存中加载,因此可节约时间。Opcode缓存扩展的使用完全处于性能考虑。有很多
免费得opcode缓存扩展可用。所以,现在的PHP代码执行引擎十分复杂。2.PHP不能执行任务(访问内存,控制硬件设备或非正常用途)PHP是一种扩展性语言。如果主要的PHP分布无法执行你的任务,通常可通过编写C或C++代码创建PHP扩展。这样PHP可完成C或C++所胜任的操作。许多PHP扩展都内置于主PHP分布中。如果你需要的东西没有内置于PHP中,可以核对PECLPHP扩展存储器。这些存储器可用于C或C++代码编写的PHP扩展。你还可以开发新的扩展或雇用程序员编写。3.PHP有时不能完成某些语言的任务或许你能用不同的编程风格执行任务,但这并不意味着你不能在PHP中开发相同特性。如果你发现某个任务只能用某种语言完成,或你必须依赖这种语言的现有组件,那么可尝试用特殊PHP扩展写出的其他语言。PHP扩展可以让你从PHP脚本中用其他语言执行代码,如Java,C#(。
NET),Python,Perl,Lua,JavaScript。没有用于PHP的Ruby扩展。如果你真需要,或许可尝试用JRuby将Ruby转换成
Java,然后
使用PHPJava扩展来运行转换后的Ruby代码。4.PHP不仅仅用于Web开发PHP最
常用于Web应用开发。如果仍然用PHPCLI在Web服务器外部运行PHP。他就是一个可从命令行框架启动执行各种操作的程序。即便CPU密集型应用是用于PHP且通过PHPCLI程序在Web服务器外部运行。PHPClass本身每月都通过PHPCLI程序发送大量信息。你可以创建桌面应用在Windows,Linux,Mac等
系统运行,还可以开发Windows专用应用甚至是使用扩展的Windows服务。5.
PHP只由一家公司控制PHP于1994年由RasmusLerdorf创建。后又陆续加入了许多服务于Zend的程序员。Zend程序员一直致力于PHP的开发也是出于商业目的。如果PHP开发与Zend无关,那无疑会断了他们的财路。不过说PHP开发仅受控于这家公司还是有点夸张。事实上,PHP的开发曾经和以后都需要很多与Zend无关的程序员做出(
网学)贡献。事实上,一些与Zend,微软,甲骨文等公司有关联的PHP核心
程序员只占少数派。大部分核心程序员与这些公司无关。6.PHP记录不足其实PHP的记录很不错。结构严谨,清晰,内容完善。出现在记录中的用户评论只是锦上添花,它们还限定了记录的标题,如Documentation2.0。PHP
文档团队不仅用英语做了大量记录,还将其翻译成了实际中其他语言。这无疑增加了PHP的普及度。不过,该团队并不是神,无法对特定平台中的任务进行详细描述。所以这或许是PHP中的bug。这也就是用户注释之所以重要的原因。它们其他PHP用户提供了额外信息帮助他们了解情况。7.PHP项目不可重复使用因为它们是对象指向型PHP如