php为何不适合做大型项目?
1、对递归的不良支撑
递归是一种函数挪用本身的机制。这是一种壮大的特征能够把某些庞杂的东西变得很简朴。有一个运用递归的例子是疾速排序(quicksort)。不幸的是,PHP并不善于递归。Zeev,一个PHP开发人员,说道:“PHP 4.0(Zend)对麋集数据运用了栈体式格局,而不是运用堆体式格局。也就是说它能容忍的递归函数的数目限定和其他言语比起来显著少。”见bug 1901。这是一个很不好的托言。每一个编程言语都应当供应优越的递归支撑。
2、许多PHP模块都不是线程平安的
在几年前,Apache宣布了Web服务器的2.0版。这个版本支撑多线程形式,在这个形式下,软件一个一部分能够同时运转多个。PHP的发明者说PHP的中心是线程平安的,然则非中心模块不一定是。然则十次有九次,你想要在PHP剧本中运用这类模块,但这又使你的剧本不能适宜Apache的多线程形式。这也是为何PHP小组不推荐在Apache 2 的多线程形式下运转PHP。不良的多线程形式支撑使PHP常被以为是Apache 2依旧不盛行的缘由之一。
3、PHP 由于贸易缘由而不健全
经由过程运用缓存,PHP的机能能够陡增500%[见基准测试]。那末为何缓存没有被构建在PHP中呢?由于Zend——PHP的制造者,它在贩卖本身的Zend Accelerator,所以固然,他们不想扬弃本身的贸易产物这块肥肉。
然则有另一个可选择的: APC. (Zend厥后推出Zend Optimizer,免费的加速器——译者)
4、不规范的日期花样字符
许多程序员对日期花样字符都很熟习,它是从UNIX和C言语中来的。其他一些编程言语采用了这个规范,然则很新鲜的,PHP有它本身的一套完全不兼容的日期花样字符。在C中,“%j”示意一年中的当天,在PHP中他示意一个月中的当天。然而使事变更杂沓的是:Smarty (一个很盛行的PHP模版引擎)的 strftime 函数和 date_format 函数,却运用了C/UNIX的花样化字符。
5、杂沓的许可证
你或许以为PHP是免费的,一切的在手册中提到的PHP模块也是免费的。错了!比方,假如你想在PHP中生成PDF文件,你会在手册中发明两个模块:PDF 和 ClibPDF。然则这两个都是有贸易许可证的。所以,你所运用的每一个模块,你都要确保你赞同他的许可证。
6、不一致的函数定名划定规矩
有些函数名称是有多个单词构成的。平常有三种单词组合的习气:
● 直接拼接:getnumberoffiles
● 用下划线离开:get_number_of_files
● 骆驼轨则:getNumberOfFiles
大部分言语选择个中一中。然则PHP都用到了。
比方,你想要把一些特别字符转换成HTML实体,你会运用函数htmlentities (直接拼接单词)。假如你要运用相反的功用,你要用到它的小弟弟html_entity_decode。由于某些特别的缘由,这个函数名是由下划线分开单词。怎么能如许呢?你晓得有一个函数叫strpad。或许他是str_pad?每次你都要检察一下究竟这个标记是什么或许直接等他涌现一个毛病。函数是不分大小写的,所以关于PHP来讲rawurldecode 和RawUrlDecode之间没有什么区别。这也很蹩脚,由于两个都运用到了同时他们看上去还不一样,殽杂了阅读者。
7、魔法援用的地狱
魔法援用(Magic quote)能够庇护PHP剧本免受SQL注入进击。这很好。然则出于某些缘由,你能够在php.ini中封闭这个设置。所以你假如要写出一个有弹性的剧本,你总要搜检魔法援用是开启照样封闭。如许一个“特征”应当让编程更简朴,而事实上变得更庞杂了。
总结
关于异常小的项目,它能够是一个非常相符人意的编程言语。然则关于较大的和更加庞杂的项目,PHP就显出他的柔弱了。
更多PHP相干学问,请接见ki4网!
以上就是php为何不适合做大型项目?的细致内容,更多请关注ki4网别的相干文章!