0

0

PHP如今是个什么样呢?PHP是个集中营

php中文网

php中文网

发布时间:2016-06-21 08:54:52

|

1137人浏览过

|

来源于php中文网

原创

本文是从 why php was a ghetto 这篇文章翻译而来。

有一天我跟在DUMBO的一个非常棒的创业公司的老板聊天,谈到为什么非PHP界的开发人员普遍轻视PHP和PHP相关社区。他提出了一个观点让我印象很深,很大程度上是因为以前从来没有听到过这样的说法。

如果你不知道大多数的程序员都会对PHP发什么样的牢骚,那么,这些牢骚差不多会像这样:

语法丑陋

缺乏其它语言都有的一些必要的特征(在5.3版本之前,没有命名空间,闭包)

立即学习PHP免费学习笔记(深入)”;

不一致的函数命名、使用惯例,以及其它一些怪异的东西

过程和面向对象的杂混

基本上80-90%的PHP项目都烂如一堆狗屎

但他所说的PHP的问题却是另外一个问题。他并没有说这种语言有问题——他认为这种语言被一种常见的文化现象包围着,是一种通常由语言的创造者造就的文化传统,现在看来这对一些糟糕的编程实践方法起到了鼓励作用。也就是它使PHP代码变的劣质和不可维护。

这种一个语言或框架上体现出创始人的哲学思想并被相关社区推崇的现象是的确存在的。他拿出来Ruby和其创始人Matz作为例子。Matz想要的是一种易读易写、能提高程序员工作效率的语言。没看见Ruby开发人员们言之必称快速开发以及这种语言的优雅?

接着就是DHH 和他的Rails框架。还有Guido和他的Python语言。于是我在想:Rasmus对于PHP呢?

Rasmus Lerdorf给人的印象非常的有趣。他创建了最初版的PHP语言,而且一直在改进这种语言,他在PHP社区里被当作神一样崇拜,他在PHP的任何方面都享有最大的权威。他被众多的会议邀请去做演讲,同时被大网络公司(yahoo.com)所雇用,他获得了所有人的尊敬——尽管有这样一种事实:他成了大多数的非PHP程序员所鄙视的PHP上的众多问题的形象代表。

Rasmus倡导避免使用框架,而把PHP更多的当作一种模板语言。对他来说,这种做法能产生直接的运行效率和可扩展性(程序负载可知)。而对于其他的所有人来说,这种做法导致了大量的乱炖似的过程式代码,大量的无法维护的项目。自从1995年PHP诞生至今大概10年左右的时间里,所有的PHP项目都是按照这种指导写成的。

与此同时另外一个问题突然的出现了:在PHP5.0之前,PHP的初期,PHP获得了大量的新手的追随。这种语言的入门门槛出奇的低,任何人都可以下载自解压的×AMP Windows程序安装包、在2两分钟内用上这种语言。除此之外,那时在Web开发方式上对MVC模式的共识并没有真正的出现。这样一来你可以想象,一群新手和一个缺乏好的开发实践方法的语言组合到一起能创造出什么?一堆无法维护的垃圾。而且整个大环境都是这样。

不要误解我的话——优秀的PHP开发者还是不少的,即使是当时。但是,就像我说的,粗制滥造的菜鸟作品到处都是。当牛仔式无羁的PHP程序员在没有指导原则的情况下聚集到一起开发程序,于是像PHPbb、 PHPNuke以及很多的粗糙的.php3程序包就出现了。但是你能单纯的责怪PHP开发人员吗?不能!其它的Web语言巨人,ASP和Perl,同样恶名远扬,同样宣传着一种乱炖式的开发方式。

所以这就是为什么PHP会得到这样的骂名。是因为它的历史流传。大多数已经转向Python,Ruby和Java的PHP开发人员并没有在MVC概念兴起时回头去重新思考这种语言。此外,更有一些像”Ruby公子“Zed Shaw抱怨一些程序员的思想”受PHP毒害“这样的露骨的讽刺,像这样的言论在RubyInside上很盛行。

Flowith
Flowith

一款GPT4驱动的节点式 AI 创作工具

下载

PHP是个集中营

但像Zend和CodeIgniter这样的框架的出现把这种语言推向了正确的开发方向上。事实上,它把PHP推向了与Rasmus所希望看到的相反的方向上了。查看一下Zend和CodeIgniter框架,你会发现它们是为数不多的文档写的很好,代码写的很好的程序。

大多数学习了Ruby的开发人员同时都要学习Rails和MVC知识;PHP在此之前已经被使用了整整10年。对于那些新手来说,可恶的Ruby没有给他们这段时间让他们自由发挥。Rails有现成的标准指导,它的入门门槛相对高很多,通常会把一些缺少经验的开发人员挡在门外。

事实上,PHP应用程序是可以向其它种语言那样写的很好,而且还会具有一定的运行速度上的优势。PHP世界里的MVC风格的开发方法兴起只是在近几年才出现的现象。不得不承认,我们应该感谢Rails带来的这种变化。

那么,PHP如今是个什么样呢?

各种标准(非统一,但大多数项目使用MVC,很少有垃圾般的过程式程序)

很低的入门门槛

速度和可扩展性(在各种脚本语言里PHP应该是最好的)

有一个好的单元测试框架

有最好的各国语言翻译的文档

除此之外,互联网上大多数有影响的网站都使用PHP作为它们后台的语言或工具,诸如Facebook,Digg,维基百科,Wordpress,Drupal等等。我相信,对PHP有一个深入的掌握会使一个程序员打开更多的未知领域的大门。

如果你不赞同上面所说的,请留下评论,或email给我——我想听听你为什么不这么认为。

事实上,我并不是一个PHP迷,我对语言没有感觉。我使用PHP大多是因为——你猜到了——有人愿意付钱给我。所以一切归咎于此:

如果你希望在软件设计上做出明智的决定,PHP是你开发Web应用程序的最佳选择。

顺便说一下,如果你确信要使用PHP来开发下一个Web应用,请试一试CodeIgniter。它是一个轻量级的,普通的,超级快的PHP框架。对于CodeIgniter,我是个粉丝。



PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

php

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Golang处理数据库错误教程合集
Golang处理数据库错误教程合集

本专题整合了Golang数据库错误处理方法、技巧、管理策略相关内容,阅读专题下面的文章了解更多详细内容。

67

2026.02.06

java多线程方法汇总
java多线程方法汇总

本专题整合了java多线程面试题、实现函数、执行并发相关内容,阅读专题下面的文章了解更多详细内容。

32

2026.02.06

1688阿里巴巴货源平台入口与批发采购指南
1688阿里巴巴货源平台入口与批发采购指南

本专题整理了1688阿里巴巴批发进货平台的最新入口地址与在线采购指南,帮助用户快速找到官方网站入口,了解如何进行批发采购、货源选择以及厂家直销等功能,提升采购效率与平台使用体验。

489

2026.02.06

快手网页版入口与电脑端使用指南 快手官方短视频观看入口
快手网页版入口与电脑端使用指南 快手官方短视频观看入口

本专题汇总了快手网页版的最新入口地址和电脑版使用方法,详细提供快手官网直接访问链接、网页端操作教程,以及如何无需下载安装直接观看短视频的方式,帮助用户轻松浏览和观看快手短视频内容。

265

2026.02.06

C# 多线程与异步编程
C# 多线程与异步编程

本专题深入讲解 C# 中多线程与异步编程的核心概念与实战技巧,包括线程池管理、Task 类的使用、async/await 异步编程模式、并发控制与线程同步、死锁与竞态条件的解决方案。通过实际项目,帮助开发者掌握 如何在 C# 中构建高并发、低延迟的异步系统,提升应用性能和响应速度。

18

2026.02.06

Python 微服务架构与 FastAPI 框架
Python 微服务架构与 FastAPI 框架

本专题系统讲解 Python 微服务架构设计与 FastAPI 框架应用,涵盖 FastAPI 的快速开发、路由与依赖注入、数据模型验证、API 文档自动生成、OAuth2 与 JWT 身份验证、异步支持、部署与扩展等。通过实际案例,帮助学习者掌握 使用 FastAPI 构建高效、可扩展的微服务应用,提高服务响应速度与系统可维护性。

29

2026.02.06

JavaScript 异步编程与事件驱动架构
JavaScript 异步编程与事件驱动架构

本专题深入讲解 JavaScript 异步编程与事件驱动架构,涵盖 Promise、async/await、事件循环机制、回调函数、任务队列与微任务队列、以及如何设计高效的异步应用架构。通过多个实际示例,帮助开发者掌握 如何处理复杂异步操作,并利用事件驱动设计模式构建高效、响应式应用。

14

2026.02.06

java连接字符串方法汇总
java连接字符串方法汇总

本专题整合了java连接字符串教程合集,阅读专题下面的文章了解更多详细操作。

69

2026.02.05

java中fail含义
java中fail含义

本专题整合了java中fail的含义、作用相关内容,阅读专题下面的文章了解更多详细内容。

32

2026.02.05

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 11.3万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 11.2万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号