作为老牌的Web后端开发语言,PHP今年已经24岁了。
自2011年左右,PHP开始火了起来,在全球的市场占有率非常高。
但是,互联网技术日新月异,各种编程语言层出不穷。近两年,Node.js 、GO和Python等不断挑战PHP的地位,一些技术推动者非常热衷于唱衰PHP。
PHP是真的不行了么?
PHP是真的不行了么?
PHP是真的不行了么?
全球服务器端编程语言中,PHP占到83.4%
W3Techs是一个网络技术调查网站,提供关于互联网不同技术的运用信息。2018年5月更新的最新调查结果:在全球最受欢迎的服务器端编程语言排名中,PHP占到83.4%,名列第一,显示出PHP在WEB后端有着深刻的影响力。
也许有人会说,现在都是移动互联网时代了,谁还天天坐在电脑面前刷网页?
如果这样说,那只能证明你是IT菜鸟。
大神们都知道,除了网站开发,PHP还能做很多事,游戏服务器、APP服务器、微信小程序、微信公众号、企业内部系统工程……
就算做移动端,也离不开PHP。比如腾讯很多游戏的服务端,以及天猫APP的服务器端,都离不开PHP的身影;60-70%的APP应用服务器端,都对接PHP。
目前,PHP进入了稳定期,表面上看起来似乎没有Python、Node.js等火了,但依然有广阔的前景。
在招聘网站上搜索栏输入“PHP”,出来的职位一大把,而且薪资也不错(以成都地区为例)。
所以,面对不断涌现的新技术,PHP工程师并不应该急着转行,而是发展更多的技术,毕竟招聘企业需要的都是全能型人才。
而对非科班想进入IT行业的人来说,PHP是一门简单易学的语言,非常好上手。按照惯例,一个零基础的学员,参加IT培训,学习4-6个月后,就能成为中等水平的PHP软件工程师,自学大概需要一年左右。在学会一门好上手的语言后,再涉及其它强类型语言如C、C++、JAVA等,会让自己的学习曲线更平滑。
一名合格的PHP软件工程师需要这些技能
要成为一名合格的PHP软件工程师,下面这些技能可不能少哦。这么长的单子可能看着有些晕,其中有些项了解即可,我们会在最后附上PHP完美学习路线图。
WEB前端:HTML、CSS、JavaScript、jQuery、BootStrap、Vue.js、Ngularjs
WEB服务器:Liunx系统、Unix系统、iis7、apache、nginx
服务器端编程语言:PHP、Java、ruby、asp.net、Python
PHP的框架:ThinkPHP、Laravel、Yii Framework2、Swoole、Codelgniter、CakePHP
数据库管理系统:MariaDB、MySQL、SYBASE、ORACLE、redis、mongoDB、IBM-DB2、SQL Server 2008 R2、Access
最后,让源妹儿再告诉你一个成功秘诀
“5万行+的有效代码量,才能码出一个程序员”
附一:PHP完美学习路线图
附二:PHP免费公开课
前言
最近看到一个笑话和大家分享下:
女神:你能让这个论坛的人都吵起来,我今晚就跟你走。
程序员:PHP语言是最好的语言!
论坛炸锅了,各种吵架。
女神:服了你了,我们走吧,你想干啥都行。
程序员:今天不行,我一定要说服他们,PHP语言是最好的语言。
哈哈,这当然是个程序员自我调侃的段子,由此开头,是想告诉大家在这个繁华的世界上有一类人特别的辛(ku)苦(bi),辛苦到什么程度呢?他们省吃俭用攒钱买房,结果房价越来越贵;公司外部竞争激烈,他们工作异常繁忙,披星戴月,日复一日;技术更新行业罕见,他们要随时调整心情,随时学习知识;他们长期和机器为伍,大多比较呆傻,比较单纯--------- 这一类人就是“PHP程序员”
那年龄比较大的php程序员大概还能干多久呢?
第一:国外的大牛,基本上都是30岁-50岁的,编码行业博大精深,比其他行业更需要很长久的经验积累。
第二:国内互联网界刚起步15年,预计还有30年的飞速成长期,所以对于人才的需求同比增长,在20年内,仍旧会远远大于其他任何行业。需求越大,越需要技术前辈去带动后辈。
第三:岁数大的程序员,到一定程度,往往都到架构师、需求分析师、技术总监、CTO的层面,这个时候对代码的控制效率的要求,就反而变小了。对综合技术能力的考量,却越来越大;而综合技术能力,没有5-10年的浸淫,绝对达不到一定高度的。
第四:在任何一个技术型行业,跑在前面的人才,永远都是在前面。除非你放弃了。因为任何一门技术,都是增量模式的。一个新人站在了前辈的肩膀上,固然可以飞速成长。但是当他想达到和你真正一样的高度,照样需要花费和你差不多的时间。
最后,我想说说后盾网的向老师,从事IT行业10年以上,服务过中国石油、光大银行、丰田汽车、宝洁公司等企业擅长php、mysql、linux、java、html5、css3、jquery等编程语言和数据库系统。具有多年培训经验,讲课思路清晰,重点突出,实用性强,通俗易懂。并开发HDPHP框架与HDCMS系统,目前在“后盾网”担任高级讲师,培育出了一大批的IT精英。也算是对教育行业的发展做了一大贡献啦。这样也不错。
备: 曾几何时,我非常羡慕那些码农整天朝着键盘哒哒的敲代码,一个个漂亮的页面经过行行代码就一下子就展现出来了,那时候以为做网站是件很简单的事,懂些简单的html代码就行了......呵呵。
其实年过已高的php程序员还有其他出路:
1、创业
关于php程序员创业,我引荐下程序员出生的“周鸿祎”说过的话:中国程序员创业的成功率也是很低的。放眼望去,中国互联网成功的人士有几个是真正写过十年软件的。事实上,现状和我们所能听到的媒体宣传的故事很不一样。
很多程序员的最高理想就是写一个共享软件,一年可以挣几百万。但我希望谈的不是告诉程序员如何挣钱,挣钱很容易,而是要告诉程序员如何去创业。比如虽然FlashGet的作者收入很高,衣食无忧,但从创业的角度看,它并没有以商业公司的方式创业成功
2、跟对人:
正所谓“选择远比努力重要”,一个人成功的前提不仅仅是看他是否有好的人品或者很强的能力,如果这些你都有,但却在一开始就没有跟对人,那么这一生也很可能一事无成。因此,无论对谁来说,都要在一入职场时就谨记:宁可拜错神,不要跟错人。
3、转架构师
架构师是一个既需要掌控整体又需要洞悉局部瓶颈并依据具体的业务场景给出解决方案的团队领导型人物。如果php程序员可以做到架构师这个级别,不管是能力还是薪资都是很可观的。
4、做项目经理之类的工作
项目经理是项目团队的领导者,项目经理首要职责是在预算范围内按时优质地领导项目小组完成全部项目工作内容,并使客户满意。为此项目经理必须在一系列的项目计划、组织和控制活动中做好领导工作,从而实现项目目标。
项目经理,从职业角度,是指企业建立以项目经理责任制为核心,对项目实行质量、安全、进度、成本管理的责任保证体系和全面提高项目管理水平设立的重要管理岗位。项目经理是为项目的成功策划和执行负总责的人。其实php程序员最后转项目经理之类的工作也是不错的选择。
当然作为PHP程序员,还有其他追求:
1、有些PHP程序纯粹是一种爱好学习PHP不是为了找工作,不是为了挣钱,而是为了娱乐
2、如果不努力的话,其实35岁左右就,如果没有升职的话,就是失业了
3、估计要是干到3,40了还在做最基础的程序员,那干着也没啥意思了
4、程序员都一样吧,你想做多久做多久呗。不过我估计30岁以上还是做程序员就比较惨了。身体会抗不住的吧。最好能混到项目经理之类的吧。。
没什么老的,只要你有兴趣,有精力,有毅力就可以!
备:人家都说程序员也是吃青春饭,年龄大了就被淘汰。其实我认为不然,很多的人,特别是国外的一些真正称得上专家的人年龄都比较大了。我认为最主要的是你是否有意愿去做,已保证在其领域保持竞争力。
2017年PHP程序员未来路在何方?
说了那么关于PHP程序员这行能干多久的内容,下面来分析下2017年PHP程序员的未来路在何方?
PHP 从诞生到现在已经有20多年历史,从Web时代兴起到移动互联网退潮,互联网领域各种编程语言和技术层出不穷, Node.js 、 GO 、 Python 不断地在挑战 PHP 的地位。这些技术的推动者非常热衷于唱衰 PHP , PHP 语言的未来在哪里?PHP 程序员当如何应对未来的变革?
作为老牌的Web后端编程语言,PHP 在全球市场占有率非常高,仅次于 Java ,从各个招聘网站的数据上来看PHP 开发的职位非常多,薪资水平也非常不错。实际在中小企业、互联网创业公司PHP的市场地位是高于 Java 的。Java 在超大型企业、传统软件行业、金融领域优势更大。目前来看 Node.js、 GO 、 Python 、 Ruby 等语言还难以企及PHP和Java。
PHP 语言之所以能有今天的地位,得益于PHP语言设计者一直遵从实用主义,将技术的复杂性隐藏在底层。PHP 语言入门简单,容易掌握,程序健壮性好,不容易出现像 Java 、 C++ 等其他语言那样复杂的问题,如内存泄漏和 Crash ,跟踪调试相对轻松很多。PHP 官方提供的标准库非常强大,各种功能函数都能在官方的标准库中找到,包括MySQL、Memcache、Redis、GD图形库、CURL、XML、JSON等等,免除了开发者到处找库的烦恼。PHP 的文档非常棒,每个函数都有详细的说明和使用示例。第三方类库和工具、代码、项目也很丰富。开发者可以快速、高效地使用 PHP 编写开发各类软件。到目前为止市面上仍然没有出现比 PHP 更简单易用的编程语言。所以 PHP 的前景还是很广阔的,与其纠结于编程语言的选择,不如好好地深入学习使用 PHP 。
作为一个资深的 PHP 开发者,在技术上给各位 PHP 程序十点未来的建议,希望对大家有所帮助。
1. Composer
第一点就要提 Composer ,自从 Composer 出现后,PHP 的依赖管理可以变得非常简单。程序内依赖一些类库和框架,直接使用 Composer 引入即可,通过使用 composer update安装依赖的包。解决了过去加载外部库的各种难题。Composer 也有国内镜像,速度非常快。现在绝大部分PHP开源的项目都提供了 Composer 的支持,建议大家在项目中使用 Composer 来解决 PHP 代码包管理的问题,不要再使用下载源码、手工 include 的原始方法。
2. PHP7
PHP7 版本对 Zend 引擎做了大量修改,大幅提升了 PHP 语言的性能,使用 PHP7 可以使你的程序性能瞬间翻倍。即使是 WordPress 这样重量级的软件运行在 PHP7 都能有上千 QPS ,相当于一台服务器每天就能处理 8000 万次请求。使用 PHP7 ,做好 MySQL 优化,使用 Memcache 和 Redis 进行加速,这套技术架构完全可以应对相当大规模的系统。除了某些亿级用户的平台之外,一般规模的系统完全没有压力。
3. PSR
PSR 是 http://www.php-fig.org/ 组织制定的PHP语言开发规范,约定了很多方面的规则,如命名空间、类名、规范、编码风格标准、Autoload、公共接口等。现在已经成为PHP技术社区事实上的标准了。很多知名的 PHP 框架和类库都遵守了 PSR 规范。PHP 开发者应当学习掌握 PSR 规范,在开发程序时应当尽量遵循 PSR 规范。
4. Swoole
2017 年 PHP 还局限于做 Web 网站吗?No ,如果你还不知道 Swoole ,赶快去了解一下吧。Swoole 的口号是重新定义 PHP 语言,Swoole 是一个异步并行的通信引擎,作为 PHP 的扩展来运行。Node.js 的异步回调 Swoole 有,Go语言的协程 Swoole 也有,这完全颠覆了对 PHP 的认知。使用 Swoole PHP 可以实现常驻内存的 Server 程序,可以实现 TCP 、 UDP 异步网络通信的编程开发。过去PHP只能做一个 Web 网站,现在使用 Swoole 可以做 Java 、C++ 才能实现的通信服务,比如 WebSocket 即使通信、聊天、推送服务器、RPC 远程调用服务、网关、代理、游戏服务器等。如果你想用 PHP 做点 Web 系统之外的东西,Swoole 是最好的选择。
5. Laravel
最近几年最火热的 PHP 框架,官网号称是为 Web 艺术家设计的框架,可见这套框架有多优雅。Laravel 提供的功能模块丰富,API 设计简洁,表达力强。而且它的社区非常活跃,代码贡献者众多,第三方的插件非常多,生态系统相当繁荣。 Laravel 底层使用了很多 symfony2 组件,通过 composer 实现了依赖管理。如果还在纠结使用什么PHP框架,不如选择 Laravel 。 Laravel 提供的命令行工具基于 symfony.console 实现,功能强大,集成了各种项目管理、自动生成代码的功能。
6. Phar
PHP5.3 之后支持了类似 Java 的 jar 包,名为 phar。用来将多个 PHP 文件打包为一个文件。这个特性使得 PHP 也可以像 Java 一样方便地实现应用程序打包和组件化。一个应用程序可以打成一个 Phar 包,直接放到PHP-FPM 中运行。配合 Swoole ,可以在命令行下执行 php server.phar 一键启动服务器。PHP 的代码包可以用 Phar 打包成组件,放到 Swoole 的服务器容器中去加载执行。
7. C/C++/GO
任何技术有优点就有缺点,PHP 作为一门动态脚本语言,优点是开发方便效率高。缺点就是性能差。在密集运算的场景下比 C 、 C++ 相差几十倍甚至上百倍。另外 PHP 不可以直接操作底层,需要依赖扩展库来提供 API 实现。PHP 程序员可以学习一门静态编译语言作为补充实现动静互补,C/C++/Go 都是不错的选择。而且静态语言的编程体验与动态语言完全不同,学习过程可以让你得到更大的提升。
掌握 C/C++ 语言后,还可以阅读 PHP 、 Swoole 、 Nginx 、Redis 、 Linux内核 等开源软件的源码,了解其底层运行原理。
现在最新版本的Swoole提供了C++扩展模块的支持,封装了Zend API,用C++操作PHP变得很简单,可以用C++实现PHP扩展函数和类。
8. HTML5
作为 Web 前端新一代标准,HTML5 未来前景非常广阔,市场需求量非常大。从 PC 网站、B/S 企业软件、移动端网页、APP,这些领域都在拥抱 HTML5,掌握了 HTML5 才能在下一波互联网技术大潮中存活下来。
9. Vue.js
PHP 程序员除了写后台程序之外,还有很大一部分工作在展现层,和浏览器前端打交道。2017 年你还在用 jQuery 操作 DOM 实现界面渲染吗?已经完全 out 了。现在用 Vue.js 可以非常方便地实现数据和 DOM 元素的绑定。通过 Ajax 请求后台接口返回数据后,更新前端数据自动实现界面渲染。2017 年再不学 Vue 就晚了。
如果你不光要写 Web 程序,同时还希望兼顾 Android 、IOS 、PC 客户端等平台,React Native 是一个不错的选择。
10. 深度学习/人工智能
互联网的未来属于人工智能,如果你还不了解机器学习、深度学习、人工智能这些概念,那你需要尽快学习了解一下。现在互联网巨头们都在布局人工智能,包括 Google 、 Facebook 、微软、亚马逊 和国内的百度。虽然现在还处于科学研究的阶段,但未来互联网的各个领域都会应用到人工智能,包括自动驾驶、大数据分析、网络游戏、图像识别、语言处理等。当然现在普通的工程师可能还无法参与到人工智能产品中,但至少应该理解深度学习/人工智能的基本概念和原理。
最后,做程序员是有前途的,这个前途不是停止在程序员上,而是不断的往上走,比如成为工程师、架构师、分析师等,这些才是更高的你需要去奋斗的目标,千万不要只做底层的程序员,不然就停止进步了。
目前在市场上流行的PHP框架不少50个,国内使用频率最高的除非就是轻量级的中型框架thinkphp,基于组件的高性能php框架Yii ,设计思想是很先进的,非常适合应用各种开发模式TDD Laravel框架,一款纯PHP开发的开源高性能的PHPsocket服务器Workerman框架。
在所有框架中最适合初级php程序员是thinkphp,适合中级的Laravel,高手级别Yii,每个框架都有它的特点,而且使用方式也不也一样,所以学会两种框架你也可以成为高手了,如果自己开发一个属于自己的框架,这样就不用学习别人的框架了,那么自己开发一个PHP框架有多难?
PHP本身是简单的编程语言,学习起来不是很难,在网页应用的框架思想基本都是MVC模式或MC模式,其实就是在处理他们的关系,设计过api的程序员都应该知道,MC模式只要处理好数据返回给前端就可以,至于MVC模式就是多处理一步,利用smarty渲染前端页面,所以自己开发框架不难,而是难在于这个框架能实现哪些功能,如果你说就简单增删改查框架,那么自己去研究一下php的面向对象实现思想就可以实现。
自己为什么不开发框架?开发框架要维护,要升级功能,还不如直接使用别人完整框架的功能进行开发。
引言
lumen和laravel可以使用自带的install进行安装(可参照参考1和参考2),令人发指的是最新的安装器默认采用的是php7.1,本地的环境是7.0,所以得不失礼貌微笑的说一声:干得漂亮!
问题
那么问题来了,我要安装多版本的php了,php7.1
步骤
安装php7.1
brew install php71
修改php-fpm.conf
原因是我有php70,php71,对php70我还是使用之前默认的9000端口,php71更改为9001端口,这样只要在nginx配置站点的时候制定端口就可以使用不同版本的php版本啦!!
php70的php-fpm配置php71的php-fpm配置启动php-fpm
cd /usr/local/Cellar/php@7.0/7.0.27_19/sbin
./php-fpm -Dcd /usr/local/Cellar/php@7.0/7.1.18/sbin
./php-fpm -D
php启动php-fpm配置nginx
nginx1.比如我为了测试方便,需要打印本地的phpinfo,配置了两个一个是localhost localhost9000.com,一个是localhost9001.com,监听不同的端口,指向的是同一个directory,在/usr/local/var/www里面index.php,其实就是echo phpinfo();
2.使用SwitchHost管理本地域名(工作中需要配置各种域名,这个工具棒棒哒),配置了两个
127.0.0.1localhost9000.com
127.0.0.1localhost9001.com
3.浏览器访问:
localhostlocalhost切换php版本
Q:lumen安装他用的是php的环境变量,也就是说你不能通过参数告诉他我要用哪个版本来创建lumen,你要指定php环境变量指向的php版本,不然还是无法创建应用。
A:由于运行了两个版本的php-fpm,而且在不同的端口(9000,9001)所以web访问的时候制定端口就好了,但是cli模式访问的时候就比较尴尬了,这里推荐php-version这个东东,不过我遇到了问题,就是切换不了,以至于我只能修改环境变量来制定不同的php版本。(待作者给我答复吧,github~~)
安装redis、xdebug、memcached扩展
感兴趣的可以看一下参考5,大致的意思是brew官方改版tap库了,所以你就别指望
brew install php71-redis
方法来安装redis扩展啦,xdebug,memcached等等统统不支持了,是不是瞬间忧伤成狗了???哈哈哈,还有一种方法叫源码安装。(参考4给出了扩展源码地址,下载源码,解压,然后进入目录)
1.确认phpize目录
phpizephpize2.进去扩展目录(确认好你的php环境变量是你要编译扩展对应的版本~~)
/usr/local/Cellar/php@7.1/7.1.18/bin/phpize
./configure
make
make test
make install
ext3.引入该扩展(xdebug是zend_extension扩展,redis和memcached是extension扩展)
ext4.重启php-fpm
备注
原初的目的就是为了装一下lumne5.6,没想到引出了这么多问题。。。。。不过多版本php安装感兴趣的小伙伴可以了解一下~~~
参考
https://lumen.laravel.com/docs/masterhttps://laravel.com/docs/masterhttps://blog.csdn.net/qdujunjie/article/details/38415033http://pecl.php.net/index.phphttps://newsn.net/say/brew-php-redis.html
PHP是目前所有编程语言开源项目最多编程,PHP本身开放源代码,所有的PHP源代码都可以得到。
我们热爱PHP还有其他特点,比如PHP本身免费且是开源代码,目前常见的平台都可以运行,有UNIX、LINUX、WINDOWS、Mac OS、Android等平台,更重要是PHP也是支持面向对象,完全可以用来开发大型商业程序,所以目前有很多PHP开源项目提高开发者使用。
下面介绍几个我们最常用且比较好用的PHP开源项目。
WordPress
WordPress是一个博客开源项目,本身插件众多且易于扩充,对于不太熟练PHP开发者来说是很重要的,不用你懂太多PHP,只要你根据提示安装就可以,但是如果要二次开发它最好需要一个熟练的PHP工程师才能更好的二次开发。目前WordPress在外国使用比较常见,国外还有专门职位是WordPress开发工程师,但是中国招聘这个职位很少,毕竟国人使用频率较低。
ECSHOP
ECSHOP是一个用PHP开发的商城网站,数据库是MySQL,其实我们不用想都知道,只要PHP开发的网站基本都是MySQL数据库。ECSHOP网店是一个完整购物系统,基本我们想要的功能都可以实现。
ThinkPHP
ThinkPHP是一个快速、简单的面向对象的轻量级PHP开发框架,遵循Apache2开源协议发布,并且永久免费使用,目前已升级5.版本到以上,这个框架是国人自己开发,是推荐PHP初学者选择第一个框架,学习资料十全。我们见过ThinkPHP开发项目比较好的商城网站是tpshop,和ECSHOP差不多都是商城开源网站。
DedeCms
DedeCms一个内容管理系统,包括发布、编辑、管理等网站管理系统,同样也使用php+mysql开发,只要完成搭建PHP开发环境就可以一键安装,不用任何其他操作,DedeCms是中国最受欢迎的Cms系统之一。
discuz!
discuz!一个通用的论坛社区系统,不仅功能强大,在网站访问速度方面,discuz!值得肯定的一个php开源系统。
我们常用的PHP开源项目还有CakePHP,Drupal等,最后希望各位在使用过程中尊重开发者源码,众多PHP开源项目中你们都喜欢哪几个?
Go 是一种功能强大的编程语言,具有独特的功能组合。而 PHP 是在服务器端执行的脚本语言,与 C 语言类似,是常用的网站编程语言,同时适用于所有微服务、小型、中型乃至大型应用程序。对于开发者而言,两者在使用过程中,有哪些不同的体验?本文即将为大家揭晓。
作者 | Dan Gurgui
译者 | 弯月,责编 | 屠敏
16岁的时候,我发现了PHP。这是我学习的第一门编程语言。当时,我利用PHP来检查用户提交的表单并发送电子邮件,大多数表单都是“联系我们”。多年以来,我始终将PHP作为我的强项,且坚持不懈地发展壮大自己的PHP知识和技能。虽然我觉得自己算不上PHP高手,但这是我最了解的编程语言。以前,我曾有机会在小型项目中使用Ruby、Java、Python和NodeJS。我通过这些经验比较PHP和其他编程语言,了解如何更好地利用PHP的优点并克服它的缺点。
6个月前,我成为了 MessageBird 的一名工程师。申请工作的时候,我填写了PHP,但是我没想到入职后我就开始使用 GoLang,而且与PHP渐行渐远。这种一次很好的经历,在这段时间里,我学习了一种新的编程语言,而如今我又回到了PHP,同时我还拥有6个月的Go编程经验。
Go是一种功能强大的编程语言,具有独特的功能组合。我很遗憾没能更深入地学习Go。我返回PHP的原因与编程语言本身无关,但是,我想总结一下这6个月的经验,并比较一下这两种语言。
静态与动态
GoLang是一种静态编程语言,不像PHP那样是动态的。因此,你需要在初始化变量和对象时提前想清楚。在PHP中,你永远不会初始化变量,需要时当场使用就可以了。因此,在声明一个新变量之前,对于GoLang而言你需要三思而后行,我发现这比在PHP中检查变量的做法更有效率。PHP 7添加了类型声明,这是一个更好的实践,但是在编写代码之前三思而后行是一种更健康的做法。
子程序与并行处理
GoLang 非常神奇的功能之一就是goroutine。这个功能支持异步运行功能。PHP中没有任何功能与Goroutines的简单性和易用性相提并论。每当需要在PHP中进行并行处理时,你都需要添加外部的排队机制(Beanstalk、RabbitMQ等)。这会加剧基础架构的复杂性,并增加项目的复杂性。
GoLang的并行处理远远超越了PHP。
面向对象功能
自从编程问世以来,面向对象的概念一直拥有一席之地。90年代,面向对象在C++中得到了广泛应用,也因此成为了主流范式。面向对象最吸引我的地方在于,它允许工程师使用代码创建业务逻辑图,事实证明,当不断发展的系统发生变化时,这种做法提供的价值无可限量。PHP和GoLang都提供面向对象的功能,但是,这两种语言之间存在很大差异。
我花了很长时间才习惯了隐式接口。在GoLang中,在实现所有方法后,类型就会满足接口要求。但在PHP中,你需要显式地定义类型所需的接口,然后开始实现。有了Go的这一功能,你不需要提前思考应用程序的接口,这一点与我对静态类型语言的认知正好相反。
不断发展的模型具有复杂的需求,而领域驱动的设计可以满足这种需求。为此,你需要许多面向对象的功能,PHP也的确提供了许多这样的功能:trait、抽象方法和类,final方法和类,魔术方法等等。GoLang缺少这些功能,这是一个难以克服的限制条件。因此,我认为GoLang仅适用于微服务或小型应用程序,而PHP适用于所有微服务、小型、中型乃至大型应用程序。
测试
我认为,在决定项目质量方面,测试是最重要的工作:单元测试、集成测试、功能测试、UI测试、性能测试等等,项目拥有的测试越多,交付的质量就越好。GO和PHP的单元测试框架都很出色,Go拥有嵌入式测试包,而PHP有 PHPUnit,它们都提供了一组丰富的功能,可用于测试你的代码。PHPUnit的功能比GoLang测试包更多,因为PHP的功能更多。这两种工具都可以完成编程语言的工作。然而, 在进行高级测试时,PHP和Go就会表现出很大的不同。
首先,对于性能测试,Go的测试包中拥有很多性能测试的功能。pprof 等许多库都可以使用这些功能来创建华丽的数据报告。虽然PHP也有一套可用于性能测试的库和技术,但Go的更加易于使用。我相信这是静态类型语言的优势之一。
其次,对于高级测试技术(例如BDD、TDD和A/B测试),PHP拥有更多支持、更多库,还有一个更大的社区。例如,两种语言都实现了Cucumber(或Gherkin),但是PHP 的 BEHAT 实现支持40多种语言,是完全基于独立组件构建的,而且在GitHub上的支持比Cucumber更多(更多分支、更多给星等等)。
最后,对于功能测试或UI测试,PHP的库更多,且对现有工具的支持更好。Selenium 拥有非常强大的PHP支持(3000多个跨浏览器测试、视频记录、文本和可视日志等),而对于Go来说,只有一个没有良好维护的驱动程序 tebeka / selenium(最后一次提交发生在5个月前)。
其他差异
两种语言之间还有许多其他差异,重点包括:
GoLang 的性能比PHP更好。我们有数百种基准,可以在各种情况下测试 PHP 和 GoLang,但大多数时候明显都是 GoLang 胜出。最重要的是,Go的开发速度很快:测试运行速度更快、内存使用效率更高、CPU使用率更低。PHP社区的人数远远超过了 GoLang,而且支持非常出色。我发现 GoLang 使用了许多糟糕的东西,例如代码生成器,这都是PHP社区几年前抛弃的东西。打包维护也很不相同。在GoLang中,打包维护是内部管理的;而PHP有两层不同的实现方式:第一,PHP扩展级别;第二,每个人都使用的库级别。PHP的情况更为复杂,而go则将两层管理放到了一起。
最后一点想法
这两种语言有明显的区别,在两者之间做选择非常容易。GoLang 的性能更好,拥有原生异步功能以及其他基本功能,非常适合需要频繁使用的小型应用程序和微服务。
然而,随着应用程序的不断增长,业务逻辑复杂度加剧的情况下,PHP是很自然的选择,因为你可以充分利用PHP的面向对象功能和社区支持。
原文:https://medium.com/swlh/6-months-with-golang-after-many-years-with-php-c52124fb7da?
本文为 CSDN 翻译,转载请注明来源出处。
【End】
本文将讲解如下内容:
PHP原生进程函数介绍PHP实现多进程代码
01PHP原生进程函数
虽然说PHP是世界上最好的语言,但是对于PHPer们来说,对多进程、进程管理还是相对陌生的。本文将讲解一下使用PHP原生代码如何实现多进程。
首先我们要了解PHP实现多进程的函数,如pcntl_fork、pcntl_wait、pcntl_waitpid等。
pcntl_fork ( void ) : int
这个函数的作用是创建子进程,并且返回 int 类型的进程ID,父进程和子进程都是从fork的位置开始向下继续执行。
子进程创建成功时,在父进程执行线程内返回产生的子进程的PID,在子进程执行线程内返回0。创建失败时,在父进程上下文返回-1,不会创建子进程,并且会引发一个PHP错误。
pcntl_wait ( int &$status [, int $options = 0 ] ) : int
这个函数的作用是等待或返回fork的子进程状态。此函数会挂起当前进程的执行,直到一个子进程退出或者受到一个信号要求中断当前进程或者调用一个信号处理函数。如果一个子进程在调用此函数时已经退出,此函数立刻返回。
此函数返回退出的子进程号,发生错误时返回-1,如果提供了WNOHANG作为option并且没有可用子进程时返回0。
pcntl_waitpid ( int $pid , int &$status [, int $options = 0 ] ) : int
这个函数的作用是等待或返回fork的子进程状态。调用这个函数会挂起当前进程的执行,直到参数pid指定的进程号的进程退出,或者接收到一个信号要求中断当前进程或调用一个信号处理函数。
pcntl_waitpid()返回退出的子进程进程号,发生错误时返回-1,如果提供了 WNOHANG作为option,并且没有可用子进程时返回0。
pcntl_signal ( int $signo , callback $handler [, bool $restart_syscalls = true ] ) : bool
这个函数的作用是安装信号处理器,为signo指定的信号安装一个新的信号处理器。
signo为信号编号。
handler为信号处理器,可以是用户创建的函数或方法,也可以是系统常亮SIG_IGN(忽略信号处理程序)或 SIG_DFL(默认信号处理程序)。
restart_syscalls 指定当信号到达时系统调用重启是否可用。
函数返回值为bool型,成功时返回true,失败时返回false。
02PHP实现多进程代码
如有疑问,可以留言相互讨论。
如果你手上有两套php程序,一套是基于php2.3,一套是基于php3.0的,两套程序要同时上线,此时你可以安装多个apache,但是存在端口冲突问题,如果使用不同端口,域名就要带端口号。增加服务器也是一种方法,但是增加了不必要的成本。如果在一台服务器上同时运行多个版本的php程序呢? 使用Apache + .htaccess + PHP CGI方案解决这个问题
为什么很多java程序员都不喜欢PHP程序员?这不是引战的标题,小编是根据身边很多程序员讲述,特别是比较喜欢java程序员而总结出来的。
在工作中,很多公司随着业务的增加与需求多样性,有些企业就是要求用PHP开发,所以很多开发公司都是跟着市场走,主流的编程语言java与PHP碰面,多数情况下java程序员都不喜欢PHP程序员。
PHP号称世界上最好的编程语言,在java程序员觉得PHP能开发的,java同样能开发,而且比PHP还好,所以不认为PHP是世界上最好的编程语言,java才是世界最好的编程语言。
java面向对象在编程语言中支持是最好的,虽然PHP也是支持面向对象,但是在真正的大型项目中,多数人都会选择java编程开发。
java在多线程高并发实战效果是最好的,我们也知道PHP也是可以实现多线程高并发功能,但是这些都是针对中小型网站,像大型商城在线购物系统,java可以完美实现并满足目前多人在线下单数量功能。
java编程语言复杂,需要大量学习精力,PHP编程语言简单,在开发中不需要太多配置环境。
其实每种编程语言都有它本身的优势与价值所在,当你正真领悟一种编程语言,你才知道这种语言的正真用处。
编程开发框架是什么?通俗的讲是别人封装好常用方法,开发者直接调用或使用即可。
php发展到现在已经有24年,目前php流行框架大概有十几个左右,我们常用的也是目前市场上需求最大的五个框架,分别是:ThinkPHP(国内)、Zend Framework(国外)、Yii(国外)、Laravel(中外)、CakePHP(国外)。
很多网友发现,php很多框架都是国外开发的,目前纯属于国人自己开发的只有thinkphp框架,我们简称“TP”框架。Laravel为什么说中外开发呢?Laravel目前中文文档也是比较全面,而且有中国自己人参与开发,也是目前国内使用率比较的php框架,现在流行前后台模板分离,Laravel在API设计是目前所有php框架中最好的一个,所有Laravel未来在国内市场还会继续上升。
很多国内企业开发喜欢用Zend Framework与Yii,这两个框架适合大型项目开发。对于大型项目中,他们开发简单、高效,扩展支持多。其中Yii将 Web编程中的可重用性发挥到极致,能够显著加速开发进程。CakePHP是基于十分注重快速开发,使得它成为一个非常好的用于RAD的开发框架。
最后我们来说下,我们国人自己开发的TP框架,也是目前国人使用最多的框架。初学者学习框架优先选择TP框架,完全免费中文文档,学习资料齐全,不用翻译也不用担心看不懂,学习社区也非常多。在TP5.0出来之后,号称是为API而生,其中开发模式是MVC,开发方式和思维符合我们国人的开发思维。
其实为什么国人都喜欢TP框架是:简单、资料多、容易上手、完美胜任日常项目、后期维护简单。
责任编辑:莫兰新