阅读更多

3顶
0踩

编程语言

原创新闻 关于 PHP 的十大误解

2013-07-10 10:06 by 副主编 mengyidan1988 评论(6) 有11121人浏览

作为开发人员,你常常会在网上看到不使用XX的理由之类的新闻。而作为最受欢迎的开源服务器端脚本语言,PHP也难逃这样的命运。殊不知,金无足赤、人无完人,再流行的语言都会存在缺点,或者是误解,因此,有些开发者可能就因为这些,就对它敬而远之,这不实在可惜了吗?

本文作者总结了人们对PHP的十大误解,并且进行澄清,有些误解值得深思,而有些又实在是捕风捉影。无论怎样,让我们一起来看下这些误解。

1. PHP是一门面向对象语言,但不是基于OOPS

这是完全不正确的理解,尤其是Java程序员,他们认为PHP不是基于OOPS;但他们会发现许多面向对象的特征,比如,接口、方法、抽象对象等。说实话,初始版的PHP没有太多的面向对象功能,但PHP 5添加很多面向对象技术。更重要的是,你也许会好奇,为什么Bootstrap代码在PHP里会变得那么简单,这个得归功于PHP与OO的结合。

2. PHP无法实现特定的功能

这个误解听起来比较模糊,但有许多开发者认为PHP不能实现内存访问等其他功能。但事实是,PHP是一门可扩展的语言,你只需用C或C++编写一个扩展,进行集成就OK了。或者,你无需创建,网上已经有成千上百个扩展可供使用,你可以根据需要,直接拿来使用。

3. PHP不安全

既然你认为它是不安全的,那为何不为它编写安全的代码呢。我承认,PHP里是有大量不安全的代码,但作为程序员,我们应该尽量编写可靠安全的代码。

如果拿PHP与.NET进行比较,PHP肯定是失败的。但如果你是一个技术娴熟的程序员,你无需安全“帮助”。包括日常的安全问题,但如果他们的路径是动态生成的,那你就得当心了。当然,如果你精通所有的指令,它或许会变的更安全。

4.不适合做大型应用程序

一门语言之所以能用来构建大而复杂的应用,其自身要具有一定的可靠性和高性能,而可扩展的PHP并不符合。但是,如果你设计和开发的应用程序架构很稳定,那应用程序的性能和扩展又会有什么问题呢?

事实是,一些知名的网站都是采用PHP设计的,比如Facebook、Wikipedia、和Yahoo!等,它们都能工作的很好。

5.PHP只能用于网站开发

的确,使用PHP进行网站开发是很普遍的。但命令行接口(CLI:Command Line Interface)可以让应用程序运行在非Web服务器上。

虽然有些应用程序对CPU的要求很高,但通过执行PHP CLI,仍然可以采用PHP进行开发和运行。更重要的是,如果你想使用PHP开发桌面应用程序,只需使用Windows特定扩展即可搞定。

6.开发过程缓慢

对于这样的误解,我实在不知道是从哪里传出来的。有可能你编写的PHP代码很凌乱、并且里面充斥着大量的MySQL语句(它们虽然很有意义,但真不应该放在那里)。而事实上,PHP有大量的框架可供开发者使用,合理使用它们会达到事半功倍的效果,大大缩减开发时间。所以,不要抱怨慢。

7.专业开发者不使用PHP

关于这个误解,坊间有各种各样的说法,比如PHP对初学者是小菜一碟,它是为那些不想认真对待开发的人准备的等等。当然,不得不承认,PHP在某些方面的确没有什么意义,但是对于这样的误解,真的是可笑之至。如果这里有许多Web应用程序都是使用PHP开发,那么想象下,一向严谨的开发商却对PHP敬而远之,乃是完全错误的。

8.性能问题

这个是技巧问题,而不是误解。任何事情都有好有坏。性能优化也一直是开发者们争先讨论的话题。事实上,对于性能低下的应用,里面可能充斥着大量的垃圾代码,比如隐式转换、无用的模块、操作法缺乏重载等,这些都会影响到PHP应用程序的性能。但这最终要取决于你如何使用这门语言去创建一个稳定快速的应用程序。

9.便宜的应用程序意味着质量不高

在开源逐渐成为主流的市场环境下,免费、开源是PHP最大的优势。这意味着大多数拥有专业知识的开发人员都可以提供开发服务,并且还可以为客户节省成本。但这并不意味着质量就有问题,同样也可以开发出高性能的应用程序。

10.PHP被高估了

好吧,这或许只是你的个人想法,大部分的PHP程序员是不会这么想的。

写在最后

随着语言的不断发展和壮大,各种误解也会接踵而来,但无论如何,一些不实的谣言都会不攻而破。常言道,实践是检验真理的唯一标准,所以,在选择相信或不相信之前,最好亲自试验确认下。

Via Bestdesigntuts

  • 大小: 138.6 KB
来自: CSDN
3
0
评论 共 6 条 请登录后发表评论
6 楼 saiyaren 2013-07-25 16:45
月影无痕 写道
性能问题往往在于数据库,网络IO,磁盘IO等环节,php语言本身的性能并不是最高的,但却绝不是性能瓶颈所在。

数据库层面如果是读库,一般通过cache解决
网络IO上面一般来说瓶颈不大(每台机器千兆都到不了瓶颈,网络有啥瓶颈),我测试的一般网络不是瓶颈,除非发特小的包,正常的项目中网络没有遇到过瓶颈
磁盘IO更不是瓶颈,PHP一般来说用内存加速器都在内存中存了opcode,对于磁盘根本形成不了瓶颈
最主要的瓶颈还是在CPU上,PHP由于解释型,即使加了内存加速器,性能还不是很高,所以瓶颈在cpu,并不在库,NET IO和wa;
所以优化php,通过hhvm的jit还是很好的,一般来说可以降低cpu 50%-300%,平均50%,左右,这是我测试和线上有数据的
5 楼 月影无痕 2013-07-25 16:08
性能问题往往在于数据库,网络IO,磁盘IO等环节,php语言本身的性能并不是最高的,但却绝不是性能瓶颈所在。
4 楼 saiyaren 2013-07-12 12:48
hanjiangit 写道
高并发,高性能,大量开源组件并且需要有多种选择, php先天不足吧

你可以尝试用 hhvm,hhvm采用了bytecode+jit,bytecode和php 加速器一样的性能,jit的性能和之前的静态编译一样的性能,直接调用寄存器,应该比java的性能高,我目前的测试以及使用效果来看,但是就是扩展和稳定性不足,需要长期测试。
可以看我的博客
http://saiyaren.iteye.com/
3 楼 hanjiangit 2013-07-11 15:03
高并发,高性能,大量开源组件并且需要有多种选择, php先天不足吧
2 楼 pdreamer 2013-07-11 10:19
yixiandave 写道
写过一段时间php,解释执行机制太蛋疼了。。测试不到位哪怕是简单的语法错误都不会被发现。。当时用的是eclipse pdt就是了

zend studio语法错误都有红色错误提示,PHPUnit等单元测试工具可用。
1 楼 yixiandave 2013-07-11 10:05
写过一段时间php,解释执行机制太蛋疼了。。测试不到位哪怕是简单的语法错误都不会被发现。。当时用的是eclipse pdt就是了

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 编程随想博客文集 2010

    编程随想博客文集 2010

  • 转载:编程随想的博客

    今天一口气把这个博客的内容全部看完,深有体会,学会了很多东西,同样是软件开发人员,怎么差距这么大呢?特别转载过来,以供随时参考。:) 博客地址:http://program-think.blogspot.com/(这个地址已经完蛋了) 做技术的或项目管理的都应该来看看。  希望博主不要介意。嘿嘿。。。 今天想看看,却发现这个博客被封了,郁闷,找到了博主的新地址,

  • 编程随想

    音乐是有记忆的,我们在听音乐的时候,往往能听到自己的过往,尤其是对我这种歌单万年传承的人而言。

  • 博客收集

    http://program-think.blogspot.com/  编程随想的博客  http://blog.csdn.net/greatverve/  大气象学习园地

  • 编程随想(只是基于自己工作学习经历,不具备普适性)

    编程随想(想把工作中想到的可以作为自己编程规范的思路写下来,很多一下想不起来了,想起来持续更新吧)

  • 如何成为优秀开发人员 系列文章 - by 编程随想

    自我总结:1.       基本上算是有兴趣2.       基本上算是自学能力还不错3.       多用订阅(Google阅读器), 多看电子书英文书4.       个人目标还算比较明确5.       多熟悉各种开发辅助工具,熟悉测试6.       学习自动化工具,Python。版权声明 本本系列文章,作者皆保留版权。转载必须包含本声明,保持本文完整,并以超链接形式注明作者编程随想 和本文原始地址:http://program-think.blogspot.com/2009/01/0.

  • 编程随想博客文集 2009

    编程随想博客文集 2009

  • 编程随想博客匿名术文集 2009~2015

    编程随想博客匿名术文集 2009~2015

  • 编程随想谈谈DHT

    [聊聊分布式散列表(DHT)的原理——以 Kademlia(Kad) 和 Chord 为例](https://program-think.blogspot.com/2017/09/Introduction-DHT-Kademlia-Chord.html#head-1) ...

  • 【天下有春】数、哲、编程随想(待完成)

    1.线性代数是什么? 从算行列式到各类矩阵、和二次型,我不由得思考,线性代数到底在干什么? 世界是多维且复杂的,而多维矩阵能很好的抽象这个世界,而多维矩阵的性质总结起来,就是线性代数。 从这个角度出发,我们今日应用的很多东西,无外乎是线性与混沌。而今日编程,很大程度上是建立在线性关系上的。 2.线性代数在干什么? 线性代数本质是对世界的一种抽象,以方便让人类更容易理解客观规律。从这个角度来说,高数、线代、英语等语言没有本质区别,都是对客观规律或信息的描述,而线性代数的信息冗余较少,能够很好的抽象这个世界

  • 名人名言——摘录自编程随想的博客

    1. 一个人的价值,在于他贡献了什么,而不在于他获得了什么!——爱因斯坦2. 你若喜爱你自己的价值,你就得给世界创造价值!——歌德3. 我从来不把安逸和享乐当作生活目的;对这种伦理基础,我称之为【猪栏的理想】——爱因斯坦4. 未经反思自省的人生不值得去过The unexamined life is not worth living.——苏格拉底 (哲学之父)5. 大多数人在20到30岁就已经过...

  • java面试题之分析(二)

    QUESTION NO:2 package com.cdu.test; public class Test { static boolean foo(char c) { System.out.print(c); return true; } public static void main( String[] argv ){ int i =0; for ( f...

  • 国人项目上了Github全球热榜,之后都发生了什么?

    学习算法从此不再迷路!

  • 编程随想 关系图_非易失内存随想

    本文是看这个文档的一些随想:https://lwn.net/Articles/777212/。这是收费内容,如果你没有订阅看不见,但本文不依赖你看得到该文档。在大学里学计算机体系结构的时候,我最大的一个梦想是非易失内存。因为当时教科书里说,随机内存都是需要进行周期刷新的,不断刷电才能保证里面的内容不会丢失。这种说法很自然让我有这么个联想:如果正好我们能找到一种新材料,不用刷这个电,就可以保证里面的...

Global site tag (gtag.js) - Google Analytics