天涯论坛

 找回密码
 立即注册
搜索
查看: 17|回复: 3

PHP语言变得没那样好,还有必要再用吗?

[复制链接]

2835

主题

316

回帖

9191万

积分

论坛元老

Rank: 8Rank: 8

积分
91919712
发表于 2024-10-4 16:54:46 | 显示全部楼层 |阅读模式

PHP在软件研发市场上,较之前几年,似乎有点下降。还有有些研发人员对PHP持有不满意态度。某种程度上,这是正确的看法。在过去的几年中,PHP经历了一次大规模的重构,它是不是将错误的设计彻底掰开了呢?

我承认,PHP的确糟糕。我尚佯做不知的写了好数年PHP,我必须接受现今所有对PHP不友好的言论。可是这样做对吗?

都数研发者对PHP语言的广泛态度是:不良的语言设计。这种论对一个资深PHP研发者感到很尴尬,乃至对一颗工匠之心造成为了困惑,曾经这个世界上最好的Web研发语言,此刻是如此的破,比Perl还“破”(并对Perl语言有任何不敬之意)。

然则我想起最起始学编程时,包含自己与身边并不是计算机专业的人叫作赞,有医生还有摄影师,学液压的工程师,她们压根没学过神马编译原理,数据库,操作系统等专业课,但却由于PHP而疯狂的爱好上了网站研发

就在几年前,在Quora上有一篇文案被广泛传播。这篇文案的作者是Quora的创始人Adam DAngelo。此文案的大意是PHP设计欠妥安排欠好研发运用状况很是糟糕。

不妨回顾一下PHP刚显现的时候,它起始此刻这般被大规模应用。因为它的易用性,非常多人在各个行业都在用它来研发网站或单个应用。后来互联网发展越来越大,行业出现了转变,人们的需要变了。PHP好似没咋变,还显出有点迟滞,这可能是PHP社区的原由例如函数命名的的不一致,例如mysql_*之类的函数,还存在有些安全性问题。我用了非常多年的PHP,它还有不少陷阱,这让我感到比较痛苦。

吐槽了半天PHP,是不是感觉很爽。

然则,如今已然快2020年,上面说到的那篇文案却写于2012年,如今人们仍然在热传和引用这篇文案人们的视野还是像当年那样的燥动和茫然因此呢我想说两句,待俺擦亮自己钛金眼镜下的土狗眼,来总结一下PHP这两年出现的变化。

PHP在近年来出现了重大的更新。例如Facebook和PHP7从HipHop到HHVM的发展,不论是PHP官方还是应用研发者都认识到了问题的重要,始终此刻你看到本文,社区和研发始终处理和改善这门语言。在2019年的今天,倘若你仍然运用mysql_*来研发把锅扔给PHP,那样你需要重新学习了。

如同地域黑通常,编程语言的鄙视链不晓得啥时候显现的,不晓得为何会存在这些东西?

是的,只要有东西一旦受欢迎,火了,就会导致有些人讨厌乃至谩骂。人们讨厌Java,说太重,配置繁琐,Oracle要收钱;人们讨厌C++,难学丑陋又低级等...

此刻AI和人工智能火了,Python起始被人们所追捧,有人就拿它和PHP进行比较。我对Python成见,Python是一个很棒的语言,与PHP同样是脚本语言,但它发明的目的便是此刻流行的AI/设备学习/数据科学吗?

还有一个让我没法对Python完全接受的原由:Python运行太慢,尤其是用在网站研发上。如此说来,倘若抱怨PHP代码丑陋,我就会说Python运行缓慢。这是由于,用Python需要运用框架研发。最起始时,我只是想用Python研发一个简单的程序来跑,而Python社区举荐我用Django或Flask。我不爱好臃肿的框架,另一在Python编程中,要小心空白或空格的坑。

别外,Python的面向对象特别有趣,它运用下划线来拜访对象修饰符。有人能够理解这个声明,但我更爱好显式的声明。Python确实是一个很棒的语言,它还有一个很棒的研发者社区,但仍然有人不爱好它。就像咱们自己觉得在任何地区都受到欢迎同样,这应该是一场漂亮的误会,必定会有人不爱好你。

另一,我个人不是很爱好JavaScript这个东西,当然这纯属个人观点。有些JavaScript帅哥奋斗游说我,Node.js此刻能够充当PHP的角色,Node.js会比PHP、Java以及Python等后端语言更优秀,安全况且速度更快,我应该马上去学习Node.js,这些伴侣还说是PHP发明了SQL注入,我便无语了。

回到PHP的专题。你此刻手里还有PHP4乃至更早的遗留代码吗?送大众一份新的编码名单

1、运用OOP编程

你仍然能够编写面向过程的程序,但社区已朝着面向对象的办法发展。它完全匹配新模型,能够很好地构造代码。运用面向对象,自动隐含几种简洁的编码实践,例如SOLID和DRY。

OOP能够让代码库有干净的结构,并使各部分的模块之间的分离更好。倘若保持爱好编写意大利面条代码,人拦着,你会让PHP最糟糕,而后给自己起个坏名字吧。任何编程语言都能够做到这一点。不只是PHP。

2、运用严格的数据类型

在编程时,要运用严格的数据类型。类似于:

declare(strict_types=1)

静态类型能够帮忙数据保持一致和安全。PHP是一种动态类型的语言,有时需要排除该特性,运用严格的类型以及更安全的路径,能够使程序在运行时避免怪异和不可预测的错误。

3、命名空间

到了PHP5.6之后,页面中include语句再也不平常运用命名空间来“import”导入需要“use”的模块。这是对原始PHP进行抽象的一种办法,即封装了include逻辑。

刚一起始运用“\”做为命名空间分隔符是有点怪异,然则咱们会慢慢习惯它。不消运用哪些require或include语句,命名空间将代码放到正确的位置。

这让我又想到了以下有些要点。

4、Artists

此刻打算起步一个PHP项目,能够运用Composer,这是一个包依赖关系管理工具,可让定义扩展包的依赖关系,应用程序和测试入口点,在需要时从Packagist中央存储库中加载依赖关系。Composer会生成一个Auto Loader自动加载器,这是咱们全部项目独一对include的调用。

5、抛弃mysql_*

mysql_* 已然存在很长一段时间,如今所有函数都已被弃用,并已然在PHP 7中已将其永久删除。倘若你仍然抱怨mysql_*函数怎么欠好,你该升级你的PHP版本。到日前为止,处理数据库的最佳办法是PDO与prepare联用的方式。这是一个通用API,可与海量数据库很好地协同运用

爱好PDO的地区是纯净,相对现代化的设计,面向对象且一致性好。倘若刚才起始一个PHP项目,请立即转为运用PDO。

另一,不要运用和创建DB封装程序,例如DBConnection extends PDO。倘若需要经过PDO进行某种抽象,请运用Data Mapper和ORM Doctrine,不要用Active Record变体。

6、分散你的担忧

因此今天的PHP社区显现问题,有部分原由是官方社区的新开发人员将其搞得一团糟,有时感觉比JavaScript社区更糟(我感到很抱歉)。因为PHP易于学习和入门,因此新手经常写有些hacky硬编码并安排到生产环境中。而其他编程语言这个能力,这是由于

a)学习曲线更陡峭;

b)事先有着严格的设计策略;

c) 严格的安排配置标准;

咱们经过分散焦点来处理这类问题。我记得初学时,曾经曾经将函数的一部分代码直接复制粘贴到其他文件中,从而完成相同的功能,只是稍稍有有些修改。我晓得为何初学者会这般干。

首要,请先给功能做减法。将代码分解成小模块,让它们独立和单一地做一件事。例如有一个User类,它不准许有创建信息,加密信息并将信息发送给其他用户等功能。

结合来自互联网的开源库,这些库发布前已然经过很好测试,能够很好地处理问题,况且做得更好。研发者应该更专注于业务规律运用现有办法,不要产生紧密耦合。

7、运用PSR

最后,严格遵循编码约定,并在PHP-FIG上阅读。PHP标准意见(PSR)会让你和团队有着一致的代码库,从而方便理解与扩展,且编写与项目兼容的代码,在集成过程中的标准检测能够阻止烂代码,不会让你在写了有些代码后的3个月内大骂自己:)

意见一般适用于每种语言。遵循编码约定并奋斗编写更好的代码。当然,人能阻止你作为“代码叛逆者”,还发明阻止程序员写某种代码的技术。

8、PHP在中国

PHP在2008年到2012年是一个巅峰,有Discuz、PHPWind等现今仍流行的制品,尤其是当时Facebook等明星级机构运用PHP做为研发语言,国内的门户运用了PHP做为所有或前端语言。后来是因为移动端研发的兴起,使Web研发再也不像以前能够前后通吃,这包含后端所有语言。

PHP与各样语言的互通,各样硬件的互通,仍然是最方便的语言。PHP在国内的发展,比国外要更加普及,有新的PHP运行环境polar PHP,还有协程客户端Swoole,还有PHP的内核研发者鸟哥,PHP的几大框架Laraval、YII、ThinkPHP以及CodeIgniter,有两个是中国人研发的,即YII和ThinkPHP,这些都在让PHP7研发制品性能和效能达到更佳。

小结

仅管PHP语言很烂。但其它语言是如此,咱们只是用它们做为工具来完成任务。我不只一次看到,即便是用静态语言,二把刀的人用Java输出的是糟糕的代码。

有一句话叫代码如诗,让自己和团队来写看起来像诗歌的程序,而不是丑陋的像打架同样的代码。

如此一来,你能够安心的用PHP起步下一个项目了,你和同事们会做更好的判断吗?同事可能太自由随便了,嗯,她们的代码还在编译中。此刻就去做,语言是你的工具,写好制品的每行代码是你的工作。

那样问题来了,当有人再说“PHP是最好的语言”时,该怎么样说?

以下是社区中的有些网友评论:

人类的爱:

很好的总结。我始终在用PHP,咱们的API在PHP Slim 3框架上运行。运用了PSR、自动加载、Composer,这些对PHP社区做了重大改进。曾经,我最大的抱怨是PHP函数(尤其是字符串)参数次序不一致。

爱好PHP是开放的。给桔子剥皮不仅有一种办法,这便是为何我个人讨厌自以为是的语言和框架的原由

爱好能够在自选的任意Web服务器上运行它,例如在Apache的模块或Nginx的FPM上运行。

语法种子:

人们始终在引用2012年的文案!!7年的发展不应焕然一新吗?

CS老兵:

不错的文案。我都看完了,说实话,我当年写了不少非常烂的php代码,然则后来经过用Laravel框架学习OOP帮我改变了非常多陋习。

DAS:

正确的结论。参数不一致是PHP的重点问题,真的需要处理。这有时真的很烦人。

然则得再说一次,用任何一种语言记住每一个参数次序都不太容易。擅用手册一个不错的IDE/编辑器来帮我弥补是个好想法,例如PHPStorm就做得挺好。

作者:老夏

当CPU飙升时,找出PHP中可能有问题的代码行

鸟哥惠新宸:程序员应该持续提高自己的不可替代性

为何Laravel会作为最成功的PHP框架?

21CTO学院PHP全栈工程师隆重开营啦,报名得到一线互联网机构就业机会!





上一篇:[精选] JIT 是什么 ? PHP8的JIT是怎么样工作的?
下一篇:PHP这门语言还有市场么?
回复

使用道具 举报

3047

主题

3万

回帖

9606万

积分

论坛元老

Rank: 8Rank: 8

积分
96065852
发表于 2024-10-21 04:14:00 | 显示全部楼层
你的见解真是独到,让我受益匪浅。
回复

使用道具 举报

3047

主题

3万

回帖

9606万

积分

论坛元老

Rank: 8Rank: 8

积分
96065852
发表于 2024-10-30 08:24:18 | 显示全部楼层
百度seo优化论坛 http://www.fok120.com/
回复

使用道具 举报

2996

主题

3万

回帖

9910万

积分

论坛元老

Rank: 8Rank: 8

积分
99109194
发表于 昨天 17:47 | 显示全部楼层
你的留言真是温暖如春,让我感受到了无尽的支持与鼓励。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站点统计|Archiver|手机版|小黑屋|天涯论坛 ( 非经营性网站 )|网站地图

GMT+8, 2024-11-23 05:30 , Processed in 0.119930 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.