龙空技术网

PHP这门语言还有市场么?

爱钓鱼的代码搬运工 1586

前言:

现在同学们对“php转行做什么”大概比较关心,姐妹们都需要分析一些“php转行做什么”的相关文章。那么小编在网络上搜集了一些关于“php转行做什么””的相关资讯,希望朋友们能喜欢,姐妹们一起来学习一下吧!

小编十年码农,资深北漂,大厂小厂兜兜转转,阅项目无数,曾在入行之初对 .net嗤之以鼻,对java 不屑一顾,却对“PHP是世界上最好的语言”深信不疑,并誓言致死捍卫PHP的荣耀和地位。然而,随着项目经验的增加,学习的深入,慢慢的认识到PHP的一些短板和劣势。

你们闭嘴,PHP是世界上最好的语言

但是,作为一名Phper转语言真的是大势所趋么?继续在php领域深耕,把技术做专做精,不转行不行?相信很多的phper都面临着跟本人一样的徘徊,今天,小编就站在一个普通开发者的角度聊一聊:小编在使用PHP的感受和体会。

PHP诞生于1994年,是由Rasmus Lerdorf创建的一个简单的个人工具集。在早期,PHP的主要用途是与数据库进行交互,并生成动态的HTML内容。这使得开发人员可以根据用户的请求动态地生成网页内容。这种能力使得PHP成为一种流行的选择,用于构建动态网站和Web应用程序。

PHP是一种弱类型的动态语言,与Java等强类型静态语言相比,这种弱类型语言特性,可以使开发人员在开发过程中随心所欲,不必过度关注变量的类型转换,开发人员无需在变量定义时显示声明。在与数据库交互上,想用构造器就用构造器,想直接写sql 就可以直接在代码中构造sql,只要做好安全防护,不必要写大量冗余的与数据库字段一一对应的实体类。正是这种灵活性,使得开发人员可以快速测试和调整代码逻辑,从而加速了开发速度和迭代过程,PHP的学习曲线相对较低,初学者也可以快速的上手。在国内互联网高速发展的那几年,时间就是金钱,PHP正是在这样的背景下风头一时无两。小编也是在那几年入的坑。

坑深似海

PHP生态庞大而混乱,国内外框架林林总总,小编用过的就有:Thinkphp,Ci,Yii,Yaf等,在没有composer的年代,各个框架标准不一,互相之间不兼容。想必早期的Phper 都面临过这样的囧境,在第三方网站上找到的好用的工具包,拿到自己项目中使用时,为了符合自己项目的自动加载规则,改代码改到吐,还得面对一些莫名其妙的bug,线上使用更是得加倍的小心谨慎,有时为了安全起见不得不放弃而自己从头造轮子。

直到Composer和PSR一系列标准的出现,才把PHP从野蛮发展的时代带到了现代文明的时代。Laravel框架—一个为web艺术家创造的框架,一经问世就受到了广大Phper的热烈欢迎,以其简洁、优雅的语法、强大的功能和活跃的社区支持成为了PHP开发中的首选框架之一。同时,也引得像Thinkphp这样的国内框家的争相模仿。但不得不承认的是,PHP框架的很多设计思想都借鉴了其他语言。Laravel框架借鉴了java的spring框架引入了依赖注入和控制反转概念,提供了容器和服务提供者来管理对象和依赖关系。尽管Laravel框架在开发速度和开发效率方面提供了很多优势,但与一些更轻量级的框架相比,它的过度臃肿和性能消耗一直广受诟病。PHP在性能上的劣势,归根结底还是PHP语言本身设计上的缺陷。

PHP因web而生,也被web所累,似乎在诞生之初就没有干其他事情的基因。

现如今程序语言百家争鸣,各个语言都在不同的领域有所建树,PHP到目前为止还是以开发b/s架构的web为主。在当下的移动互联网时代,互联网流量呈指数型增加,大流量高并发网站是当下主流,PHP语言本身在开发大流量网站上天然不具备优势。

PHP本身并没有直接处理底层网络连接的能力。它依赖于Web服务器来接收请求和发送响应。Web服务器负责与客户端建立和管理网络连接,并将请求传递给PHP解释器(FastCGI或PHP-FPM)。PHP解释器只负责处理业务逻辑和生成响应,不直接与客户端进行网络通信。传统的PHP进程模型通常是每请求一个进程,这导致在高并发情况下需要频繁创建和销毁进程,消耗大量系统资源和时间。这种模型对于处理大量并发请求的性能较差。且PHP进程之间不共享状态,每个请求都是独立的。这意味着无法直接共享内存或数据结构,导致在处理大量并发请求时难以共享和管理数据,增加了开发复杂度。传统的PHP进程模型是IO阻塞的,当一个请求在执行数据库查询、文件读写等阻塞IO操作时,整个进程都会被阻塞,无法同时处理其他请求。这会导致在高并发环境下性能下降。

头疼

虽然,现在PHP也诞生了像swoole这样的高性能,非阻塞IO的扩展,但是要想使用Swoole,需要重新编译PHP,对于已经运行多年非容器化部署的老项目,升级起来就是灾难。Swoole的协程也借鉴了Golang 的协程,就连启动协程的go函数都一样,如果项目真的需要高并发以及网络编程,小编建议直接上Golang,毕竟Golang这门语言天生自带高并发。况且,万物上云的时代,Go就是为了云原生而生,更是诞生了像 Docker、Kubernetes、Etcd、InfluxDB这样的神级项目。而同样的,在容器化微服务时代,Java的生态要比PHP完善的多,Springboot以及Spring cloud 使Java开发微服务变得容易,国内大厂阿里巴巴的Spring cloud 全家桶更是锦上添花。这些都是是PHP所不能比的。

总之,PHP好像一直在模仿,而从来都没有超越别人。Composer在某种程度上也是受到了其他包管理工具的启发,是软件开发方式和程序运行逻辑变革大背景下的顺势而为,仿佛没有一件东西是起源于PHP发扬于PHP。国内越来越多的大厂技术架构也在慢慢的剥离PHP,向其他语言转型。在求职市场上,PHP的表现也越来越差强人意,况且在国内如此内卷的大环境下,35岁的年龄是你想甩也甩不掉的魔咒。你不改变就意味着被优化和淘汰,不断学习是每一个程序员的宿命,也是每一个程序员保持职业寿命的重要手段。

所以改变从什么时候都不晚,让我们一起行动起来吧。接下来小编会分享在学习其他语言的过程中遇到的问题和学习心得,通过搜索资料、阅读书籍整理成文章,分享给大家。

学无止境

标签: #php转行做什么 #php技术领域 #php发展现状