Home  >  Article  >  Backend Development  >  为什么说PHP是首选的Web开发语言?

为什么说PHP是首选的Web开发语言?

WBOY
WBOYOriginal
2016-06-20 12:40:46912browse

为什么说PHP是首选的Web开发语言?

2016.01.08 22:59:56

不知何时开始,程序员把一致的调侃送给了PHP,“尊称”其为“神语言”,并且PHP总被冠以“代码凌乱”、“漏洞不少”的不良名称。在我所接触的Web开发技术如:Rails、 ASP.NET MVC、Java Web、Django、Sinatra以及PHP中,PHP应该是首选Web开发语言。 请注意,这里的“首选”不是“最好”的意思,而是开发工具栈学习选型过程应该优先考虑的技术。

为什么这么说呢?理由一下子在脑袋里冒出了好多条,姑且梳理下吧:

  1. PHP是为Web而生的,天然与HTML、JavaScript有亲近感,也就是原生味儿十足。即使是PHP与HTML代码混杂,从某种角度而言,也能帮助初学者直观地了解Web技术机理,坏事有时候也是好事。另一方面,开源PHP的C风格、Unix/Linux范儿让其在Apache、Nginx等Web应用服务器上表现优异。 总之,PHP与Web是浑然天成的结合方式。
  2. 要掌握PHP,我建议从备受诟病的“代码凌乱”编程风格 -- 或许是从PHP与HTML混合编程开始,待直观了解Web开发技术之后,再考虑代码组织和结构的重构,这样有助于自己以更加原生的方式掌握Web的秘密。那么,什么是更加原生的方式呢?随手举个例子:典型的404状态码。

    用PHP的实现:

    404.php

    <?phpheader("HTTP/1.1 404 Not Found");include("404.html");exit;?>

    404.html

    <!DOCTYPE html><html lang="zh-CN"><head>    <meta charset="utf-8"></head><body>    <p>404页面。</p></body></html>

    再看看如 ASP.NET MVC中的实现:

    public ActionResult Details(int id){    return HttpNotFound();}

    虽然封装得很好,但是,跟PHP方式比较就知道, ASP.NET MVC中的实现确实比较抽象不够直观,而且是在控制器里直接定义和跳转的。 在PHP中,显而易见,一下就明白了代码中header的含义:HTTP-Version、Status-Code、Reason-Phrase。

    顺带说说Rails中的处理方式,抽象程度也很高:

    render :template => '......', :status => 404
  3. 与PHP类似的还有JSP,但JSP往往需要与JEE其他技术模块相配合使用,体系足够庞大,需要有长期准备。其他如 ASP.NET MVC、Rails等框架的抽象度较高,也不建议作为首选。

  4. 不得不提Node.js,Node.js是目前很火的技术,号称“全栈”的希望所在,常拿来跟PHP争论比较:什么并发、线程、进程等等。在这里无意评论孰优孰劣,但至少PHP可以让你多掌握一门技术,而不止是JavaScript。此外,PHP的大型业务的成熟应用案例可是比比皆是吖。

  5. 那么,是不是该一直坚持指哪打哪的“代码凌乱”方式呢?当然不应该。PHP提供的OOP特性足够强大,在技能与理解程度达到一定高度时,完全可以以OOP的方式来组织代码。在PHP领域,各种框架非常多,比如Laravel、CI、FuelPHP、Yii、Symfony、Zend Framework等等,届时随便选一个都可以进行规范化开发。 “代码凌乱”关键不在于工具本身,而在于人自己!要知道用Java也能写出烂代码。

  6. PHP的资料非常丰富。

  7. 最后,有一个稍稍题外话的看法,早前我还觉得在RESTful方式不断普及下,由于RESTful Web Services使用标准的 HTTP 方法(GET/PUT/POST/DELETE)来抽象Web服务能力,服务端的重点将移至MC,而服务端视图模版的应用会减少,客户端的支撑需求会越来越多。比如各种前端库、框架将得到快速推进,越来越多的需求处理会前置到前端来处理。但现在我感觉这种状态考虑得太过理想了,就像数据频繁大量更迭及处理的场景,更适合服务端(如模版引擎)完成;再具体地,又如大数据量的分页,如果都在浏览器中实现,性能就一定会有很大问题。此外,频繁Ajax调用、客户端缓存机制的缺失,也将引起种种问题,再进一步来看,单页面应用(SPA)也就并非适合每一个业务场景, 服务端视图模版还是有比较多的适用领域的。

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn