php怎么开发效率高,怎样在一个月之内学好web开发?
一个月之内是有点难度的,你可以报一个培训班,这样会轻松很多 如果感兴趣的话,可以来来我们学校看看,零基础入门,包学会,名师授课,到校参观报销路费。
PHP为什么这么难学?
PHP同JAVA,Python,c相比,应该是相对简单的一门语言,而针对自学者来说,那就需要一个可行的计划,和足够的耐心来学习,如果全身心的投入编程中,四个半月就可以走马上任了,当然自己也得付出足够的毅力与时间去实践。
最好是当天学习到的知识当天消化,多敲代码,多去尝试着开发各种商城,系统等等。
下面我就想分享一下我刚开始学习PHP的时候,老师给我拟的一份四个半月学会PHP的学习大纲。总共分四个阶段。
第一阶段
html+css(两个星期(10天课)周六周天完成京东商城首页和注册页面)
第二阶段
1.php基础阶段(10天课程,从php的语法开始学习,到循环语句,条件语句...基本学习没门语言开始学习的时候都要学习的基础)
2.mysqli扩展库对数据库的操作(3天)
3.mysql数据库学习(创建表,增删改查,数据库和数据库表的导入导出)(3天)
4.项目新闻列表分页(利用以上学习,使用a标签的get请求方式实现分页)(2天)
php进阶阶段
1)GD库(制作验证码)
2)文件上传,实现多文件和单文件的上传(2天)
3)正则表达式(1天)
4)文件目录(4天)
5)利用学的文件目录知识(新闻项目——实现没增加一条新闻就存入数据库的同时生成静态页面,存到文件中)(2天)
6)PDO类对数据库的操作(3天)
7)设计模式(3天)
8)面向对象(类,接口,继承,封装等)(4天)
9)封装文件上传类,mysql类(增删改查),验证码类(3天 ,一天一个)
10)session(利用session实现用户登录状态和非登录状态)(1天)
第三阶段
1.js语法基础(3天)
2.jq语法基础(3天)——写一个轮播图和一个定时器
3.ajax和json基础(3天)
4.ajax和json结合实现登录效果,页面不刷新请求服务器效果(2天)
5.redis基础(2天)
6.mongodb
7.memcached
第四阶段
tp框架一个商城(15天)
laraval框架一个博客(15天)(其中的一小点功能应用memcached缓存实现点赞)
微信接口的调用(微信公众号中用代码调用接口实现获取用户信息,调用天气接口,获取每天的天气)(5天)
小程序基础(10天)
自学的话要了解到博客里面有什么功能模块(并通过所学的知识实现他)
php可以作为前端开发语言吗?
PHP一直就是后端语言 ,最早的时候 web2.0之前 PHP 主要用途就是用来做后端,但是做后端就会遇到个问题 你不可能所有的HTML JS CSS 都用echo 的输出。所以大量的PHP和HTML 混写。这导致后来维护很不方便。也是这原因 在08年前后 诞生了 N多的 模板引擎。这些都是可以用一种简单方式来替代PHP和HTML 混写 那时候还是PHP4 是主流。在那个时代 包括smarty 用途都很广泛 那会学PHP 必学一个脚本引擎 貌似那会框架还很少 。
随着PHP5的诞生和发展 这种写法逐步落后了~ PHP 很多简单的写法 远比这些引擎更高效 而且还不用额外的学习类库 。所以 PHP 也开始担当了前端开发的责任 。
其实在许多大型项目里 JAVA主要写后端逻辑 , JAVA作为一个工业语言 生手和熟手差距都不是很大 。而且最主要是JAVA程序员很多 。后期维护也简单。只要架构的合理 分好模块 开发起来很高效。尤其适合哪种模块超级多的项目。而php 主要用于前端和JS的信息交换 这样效率很快 。 早起的淘宝其实也是这样的 至于现在是否放弃PHP不得而知。
为什么php不适合做计算密集型业务?
PHP即“超文本预处理器”,是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。PHP独特的语法混合了C、Java、Perl以及 PHP 自创的语法。利于学习,使用广泛,主要适用于Web开发领域。
1.优点:开源 免费性 快捷性 [程序开发快,运行快,技术本身学习快]
1)跨平台,性能优越,跟Linux/Unix结合别跟Windows结合性能强45%,并且和很多免费的平台结合非常省钱,比如LAMP(Linux /Apache/Mysql/PHP)或者FAMP(FreeBSD/Apache/Mysql/PHP)结合,或者数据应用够大可以考虑换 PostgreSQL或者Oracle,支持N种数据库。(N >= 10)
2)语法简单,如果有学习C和Perl的很容易上手,并且跟ASP有部分类似。有成熟的开发工具,比如NuPHPed,或者Zend Studio等等,再Linux平台下可以使用Eclipse等等。
3)目前主流技术都支持,比如WebService、Ajax、XML等等,足够应用。
4)有比较完整的支持,比如使用ADODB或者PEAR::DB做数据库抽象层,用Smarty或者smart template做模板层,如果是PHP 5.1的话,还能够使用PDO(PHP Data Object)来访问数据库。
5)有很多成熟的框架,比如支持MVC的框架:phpMVC,支持类似ASP.net的事件驱动的框架:Prado,支持类似Ruby On Rails的快速开发的框架:Cake等等,足够满足你的应用需求。
6)PHP 5已经有成熟的面向对象体系,能够适应基本的面向对象要求。适合开发大型项目。
7)有成熟的社区来支持PHP的开发。
8)目前已经很多大型应用都是使用PHP,比如淘宝网、Yahoo、163、Sina等等大型门户,很多选用PHP来作为他们的开发语言,所以大型门户都能够选用它,我想足够能够你的使用了。
9)有很多开源的框架或开源的系统可以使用,比如比较知名的开源框架有Zend Framework、CakePHP、CodeIgniter、symfony等,开源论坛有Discuz!、Phpwind等,开源博客 WordPress,开源网店系统如Ecshop、ShopEx等,开源的SNS系统如UCHome、ThinkSNS等。
10)使用成本低 (linux apache mysql php内核)
2.缺点
1)函数命名不规范 驼峰法和下滑线,传参位置不一 你知道的
2)单线程 ; PHP本身,一直以来php就是个单进程的程序;虽然php的pthreads扩展早就有了。但是它不够稳定,运行运行着就会莫名其妙的自己挂掉;php的扩展都是C写的,这也就意味着任何一个扩展出现线程竞争资源控制问题都能让整个挂掉
3)核心异步网络不支持(当然在linux只有同步非阻塞网络模型)。却少了这个使得很难开发一个能够承受大并发的网络应用。传统的网络模型和io都阻塞的。这样基本的编程的做法就是一个进程(或者线程)响应一个用户链接请求。因此无法完成像实时网游那样需要成千上万网络连接的任务。尽管php也有Libevent、eio扩展对此算是某种程度上面的弥补,但是感觉都不是那么完善
4)只支持web开发,不方便做 .exe文件,不方便做桌面应用程序. 不方便做手机程序.
5)不适合做爬虫、自动运行脚本.科学运算项目,这语言基本构架就不适合,虽然有很多方法实现。
6)后期维护困难。后期提速空间局限性较大。
在对PHP有一个大致的认识以后,我们来了解一下为什么说PHP慢?
PHP的慢是相对于C/C++级别的语言来说,事实上,PHP语言最初的设计,就不是用来解决计算密集型的应用场景。我们可以这样粗略理解为,PHP为了提升开发效率,而牺牲了执行效率。
我们知道PHP一个很大的特点,就是弱类型特性,也就是说,我可以随意定义一个变量,然后给它随意赋值为各种类型的数据。以一个int整型数字为例子,在C语言中:
int num = 200; // 通常是4字节
但是,如果是PHP定义了一个同样的变量,实际对应的存储结构则是:
这个结构体将会占据远比C变量多得多的内存,PHP中定义方式如下:
$a = 200; //这变量将实际占用对比C变量很多倍的存储空间。
其实对PHP来说,无论存储什么类型的数据,都是用上述“通杀”的结构体实现。为了兼容PHP程序员的变量类型“乱入”,PHP做到了对开发者的友好,但是对执行引擎很残酷。单个变量内存消耗可能还不明显,一旦用到PHP的数组等,则复杂度指数上升(数组的实现是HashTable)。然后,Zend引擎执行时,将这些PHP代码编译为opcode(PHP的中间字节码,格式有点类似于汇编),由Zend引擎逐行解释执行。
无论是字符串的连接操作,还是数组的简单修改等,几乎都是“PHP程序员一句话,Zend引擎跑断腿”的节奏。因此,同样的操作,对比C来说,PHP消耗了更多的CPU和内存等系统资源。除此之外,还有内存自动回收、变量类型判断等等,都会增加系统资源的消耗。
例如,我用纯PHP实现的快速排序函数和原生sort函数,排序10000个整型数字,来做一个耗时对比,结果如下:
原生的sort耗时3.44 ms,而我们自己实现的PHP函数sort则是68.79 ms。我们发现,两者执行效率差距巨大。我的测试方式,是计算函数执行前后的时间间隔,而不是整个PHP脚本从启动到结束的时间。PHP脚本启动和关闭过程,本身有着一系列的初始化和清理工作,也会占据不少的耗时。
通常情况下,PHP执行效率的排行是:
最快的是PHP语言结构(isset、echo等),PHP语言的一部分(它们根本不是函数)。
然后比较快的就是PHP的原生和拓展函数。PHP拓展,基于Zend API之上,用C实现的功能,执行效率和C /Java是属于同一个数量级的。
真正慢的就是,我们通过PHP自己写的代码和函数。例如,假如我们使用的比较重的纯PHP实现的框架,因为框架本身的模块很多,所以,会明显拖累语言层面的执行效率,同时占据更多的内存。(国内的Yaf框架,以拓展的方式实现,因此执行效率远快于纯PHP写的框架。
在一般情况下,我们并不推荐用过PHP实现逻辑复杂计算类型的功能,尤其是Web系统流量比较大的场景下。因此,PHP程序员应该对PHP的各种原生函数和各类拓展有一个比较广泛的了解,在具体的功能实现场景中,寻求更原生的解决方案(原生接口或者拓展),而不是自己写一堆复杂的PHP代码来实现这类型功能。
如果有足够的PHP拓展开发实力,将这类型业务功能重写为一个PHP拓展,也会大幅提升代码的执行效率。这是一个非常不错的方式,也被广泛应用PHP优化中。但是,自己编写的PHP业务拓展的缺点也很明显:
拓展开发耗时比较长,需求变更的时候修改也复杂,写得不好可能会影响Web服务稳定性。(例如,在Apache的worker模式下,多线程场景下挂掉,会影响同一个进程下的其他正常子线程。如果是多线程的Web模式,编写拓展还需要支持线程安全)
拓展在PHP版本升级的时候,可能需要做额外的兼容工作。
人员变动后的维护和接手成本也比较高。
实际上,在互联网一线企业中,更常见的解决方案,并非增加PHP拓展,而用C/C 独立写一个服务server,然后PHP通过socket和服务server通信来完成业务处理,并不将PHP本身和业务耦合在一起。
不过,Web服务大部分的性能瓶颈都在网络传输和其他服务server的耗时上(例如MySQL等),PHP执行的耗时在整体耗时的占用比例非常小,所以从业务角度来说,影响可能并不明显。
php在编程语言排名中下降很厉害?
不存在竞争关系,nodejs之所以被关注是之前阿里UED团队想用来做前端服务器,也即js在服务端渲染出来,这个项目早就流产了。nodejs最大的贡献还是前端技术栈,目前react、vue的开发环境基础就是nodejs,npm。php是做后端的,C语言技术体系的外延伸,swoole也是c开发的。新版本的php框架laravel和sf4在原有的mvc框架中把v剥离出来了,大前端是趋势,只是让php暂时丧失了过去view端优势,意思之前学php连前端都可以开发的意思,需要js和html初级即可,可以开发小项目。nodejs体系毕竟其生态还远不及php,任何语言的发展关注其生态比关注语言特性有价值。工程学比很多人想象得要复杂得多,圈内的鄙视链毫无疑义,我虽从业非常多年,极少关注圈内的事。java的成就主要还是工程学的成就,单php在中型项目上也非常好用,但对架构师的要求有点高,在过去因为java的spring cloud有太完整的工具,比如分布式队列和日志解决方案,这是大型系统的最基础技术,如果是我选型,都要根据实际情况。比如团队预算,所处行业等等,给你个思考题:为何有赞这个saas软件服务商选用php?它现在号称秒并发5万订单哦,也即一天能处理1000千万个订单。所以,中小型是指其工程学规模,到了微服务架构上来说,单体应用的规模已经很小了,原本的大应用被拆分了,软件工程学还在持续发展…学语言跟挑对象一样,重点是自己“相处”了解过,自己喜欢…别听别人说自己的对象有多好。