php为什么不能做大型网站(为什么说用PHP开发大型系统令人不爽)
为什么说用PHP开发大型系统令人不爽
笔者在过去的四年里一直致力于PHP应用的开发 PHP确实十分容易编写但是PHP也有一些十分严重的缺陷
下面笔者会给出自己的理由为什么PHP不适合于比小型业余网站更大的网站
对递归的不良支持递归是一种函数调用自身的机制这是一种强大的特性可以把某些复杂的东西变得很简单有一个使用递归的例子是快速排序(quicksort)不幸的是 PHP并不擅长递归 Zeev一个PHP开发人员说道 PHP(Zend)对密集数据使用了栈方式而非使用堆方式亦就是说它能容忍的递归函数的数量限制和其他语言比起来明显少见bug这是一个很不好的借口每一个编程语言都应该提供良好的递归支持
许多PHP模块都不是线程安全的在几年前 Apache发布了Web服务器的版这一个版本支持多线程模式在这一个模式下软件一个一小部分可以同时运行多个 PHP的发明者说PHP的核心是线程安全的但是非核心模块不一定是但是十次有九次你想在PHP脚本中使用这种模块但这又使你的脚本不能合适Apache的多线程模式这亦就是为什么PHP小组不推荐在Apache的多线程模式下运行PHP不良的多线程模式支持使PHP常被认为是Apache依然不流行的原因之一
请阅读这篇讨论 Slashdot: Sites Rejecting Apache?
PHP由于商业原因而不健全通过使用缓存 PHP的性能可以陡增%[见基准测试]那么为什么缓存没有被构建在PHP中呢?因为Zend——PHP的制造者它在销售自己的Zend Accelerator所以当然他们不想抛弃自己的商业商品这块肥肉
但是有另外一个可供选择的 APC(Zend后来推出Zend Optimizer免费的加速器——译者)
没有命名空间设想某个人制作了一个PHP模块用来阅读文件模块中一个函数叫做read然后另外一个人的模块可以读取网页的同样包含一个函数read然后我们就无法同时使用这两个模块了因为PHP不知道你要用哪个函数
但是有一个很简单的解决办法那就是命名空间曾经有人建议PHP加入这一个特性但不幸得是他没有这么做现在没有命名空间每个函数都必须加上模块名作为前缀来避免名称冲突这导致了函数名恐怖得长例如xsl_xsltprocessor_transform_to_xml让代码难于书写和理解
不标准的日期格式字符很多程序员对日期格式字符都很熟悉它是从UNIX和C语言中来的其他一些编程语言采用了这一个标准但是很奇怪的 PHP有它自己的一套完全不兼容的日期格式字符在C中%j表示一年中的当天在PHP中他表示一个月中的当天然而使事情更混乱的是 Smarty(一个很流行的PHP模版引擎)的 strftime函数和 date_format函数却使用了C/UNIX的格式化字符
混乱的许可证你也许认为PHP是免费的所有的在手册中提到的PHP模块亦是免费的错了!例如如果你想在PHP中生成PDF文件你会在手册中发现两个模块 PDF和 ClibPDF但是这两个都是有商业许可证的所以你所使用的每个模块你都需要保证你同意他的许可证
不一致的函数命名规则有些函数名称是有多个单词组成的一般有三种单词组合的习惯
直接拼接 getnumberoffiles用下划线分开 get_number_of_files骆驼法则 getNumberOfFiles大多数语言选择其中一中但是PHP都用到了
例如你想要把一些特殊字符转换成HTML实体你会使用函数entities(直接拼接单词)如果你要使用相反的功能你要用到它的小弟弟_entity_decode由于某些特殊的原因这一个函数名是由下划线分隔单词怎么能这样呢?你知道有一个函数叫strpad或他是str_pad?每次你都需要查看一下到底这一个符号是什么或直接等他出现一个错误函数是不分大小写的所以对于PHP来说rawurldecode和RawUrlDecode之间没有什么区别这也很糟糕因为两个都使用到了同时他们看上去还不一样混淆了阅受众
魔法引用的地狱魔法引用(Magic quote)可以保护PHP脚本免受SQL注入攻击这很好但是出于某些原因你可在php ini中关闭这一个配置所以你如果要写出一个有弹性的脚本你总要检查魔法引用是开启还是关闭这样一个特性应该让编程更简单而本质上变得更复杂了
缺少标准框架一个成长中的网站没有一个整体框架最终会变成维护的噩梦一个框架可让很多工作变得简单现在最流行的框架模型时MVC模型在其中表现层业务逻辑和数据库访问都分离开了
很多PHP网站不使用MVC模型他们甚至没有一个框架甚至现在有一些PHP框架同时你都能自己写一个关于PHP的文章和手册没有提高框架的一个字同时JSP开发人员使用像Struts的框架 ASP开发人员使用 net看起来好像这些概念都广泛被PHP开发人员所了解这就说明了PHP本质上到底是多专业
总结什么问题?
对于非常小的项目它可是一个十分符合人意的编程语言但是对于较大的和更为复杂的项目 PHP就显出他的薄弱了当你不断地摸索之后你会发现笔者提到的某些疑问的解决方案所以当解决方案已知之后为什么不能修正他呢?另外为什么这些修补不在手册中提到呢?
一个开源的言语十分流行是一件好事但不幸得是它不是一个伟大的言语笔者希望所有的问题能有一天得到解决(也许在PHP?)然后我们就将拥有一个开源语言他既开源又好用
到今日当你要启动一个多于个脚本页面的项目的时候你最好考虑C#/ASP NET或 Java/JSP或也许Python同样是一个更加好地选择
lishixinzhi/Article/program/PHP/201311/21371
php在开发网站上有什么用
php在开发网站上有什么用?
在服务器端的网站编程中PHP会更加容易帮到你找到工作。很多互联网相关公司都在使用PHP开发框架,所以可以说市场对PHP的开发程序员的需求还是比较大的。
优势:
1、开放的源代码:
所有的PHP源代码本质上都能得到。
2、PHP是免费的。
和其它技术相对比,PHP本身免费。
3、php的快捷性
程序开发快,运行快,技术本身学习快。
嵌入于HTML:
因为PHP可以被嵌入于HTML语言,它相较于其他语言,编辑简单,实用性强,更适合新手。
4、跨平台性强:
由于PHP是运行在服务器端的脚本,可以运行在UNIX、LINUX、WINDOWS下。
5、效率高:
PHP消耗相当少的系统资源。
6、图像处理:
用PHP动态创建图像
7、面向对象:
在php4,php5中,面向对象方面都有了很大的改进,现在php完全可用来开发大型商业程序。
8、专业专注:
PHP支持脚本语言为主,同为类C语言。
更加多PHP相关常识,请访问PHP中文网!