Home >Backend Development >PHP Tutorial >为什么说PHP是首选的Web开发语言?
为什么说PHP是首选的Web开发语言?
2016.01.08 22:59:56
不知何时开始,程序员把一致的调侃送给了PHP,“尊称”其为“神语言”,并且PHP总被冠以“代码凌乱”、“漏洞不少”的不良名称。在我所接触的Web开发技术如:Rails、 ASP.NET MVC、Java Web、Django、Sinatra以及PHP中,PHP应该是首选Web开发语言。 请注意,这里的“首选”不是“最好”的意思,而是开发工具栈学习选型过程应该优先考虑的技术。
为什么这么说呢?理由一下子在脑袋里冒出了好多条,姑且梳理下吧:
要掌握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
与PHP类似的还有JSP,但JSP往往需要与JEE其他技术模块相配合使用,体系足够庞大,需要有长期准备。其他如 ASP.NET MVC、Rails等框架的抽象度较高,也不建议作为首选。
不得不提Node.js,Node.js是目前很火的技术,号称“全栈”的希望所在,常拿来跟PHP争论比较:什么并发、线程、进程等等。在这里无意评论孰优孰劣,但至少PHP可以让你多掌握一门技术,而不止是JavaScript。此外,PHP的大型业务的成熟应用案例可是比比皆是吖。
那么,是不是该一直坚持指哪打哪的“代码凌乱”方式呢?当然不应该。PHP提供的OOP特性足够强大,在技能与理解程度达到一定高度时,完全可以以OOP的方式来组织代码。在PHP领域,各种框架非常多,比如Laravel、CI、FuelPHP、Yii、Symfony、Zend Framework等等,届时随便选一个都可以进行规范化开发。 “代码凌乱”关键不在于工具本身,而在于人自己!要知道用Java也能写出烂代码。
PHP的资料非常丰富。
最后,有一个稍稍题外话的看法,早前我还觉得在RESTful方式不断普及下,由于RESTful Web Services使用标准的 HTTP 方法(GET/PUT/POST/DELETE)来抽象Web服务能力,服务端的重点将移至MC,而服务端视图模版的应用会减少,客户端的支撑需求会越来越多。比如各种前端库、框架将得到快速推进,越来越多的需求处理会前置到前端来处理。但现在我感觉这种状态考虑得太过理想了,就像数据频繁大量更迭及处理的场景,更适合服务端(如模版引擎)完成;再具体地,又如大数据量的分页,如果都在浏览器中实现,性能就一定会有很大问题。此外,频繁Ajax调用、客户端缓存机制的缺失,也将引起种种问题,再进一步来看,单页面应用(SPA)也就并非适合每一个业务场景, 服务端视图模版还是有比较多的适用领域的。