# 自学PHP开发路线与建议
php基础:php学习基础文字教程,学习php先从基础开始
php入门:php学习必看的入门视频教程,学完能够做一些基础性的web开发
php提高:php开发高级教程及经验总结,包含一些知识点的归纳总结,以及开发经验总结
php实战:php开发实战视频教程,看完你就能开发大型的web项目啦!
### 学习路线
一、 网上某些错误的学习路线图网上有些错误的学习路线图,让学完HTML、CSS后立马去学Javascript和jQuery等,这种课程简直是对牛弹琴。你特么的怎么不去搞个前端工程师培训或者是吹牛逼的全栈工程师培训呀。这种错误的路线图的问题在于将重心未放在PHP方向,而放在了前端方向。将面向对象,业务思想、SQL转化等PHP关注的重心没有放置在之前而放置在之后了。PHP的重心还是要放在业务处理上。
二、 前期加快入门前期的时候要加快入门的进度,学一些HTML和Css能基本写出网页后,就快速进入到PHP阶段。因为大家是自学的PHP,学了半天还没搞到PHP的话,会放松对学习的热情,从而造成自学效果下降。学完HTML和Css不要学Js,立马进入到环境的搭建上来。
三、 关于开发 环境很多人在这儿走弯路,喜欢找不到同教程看环境搭建。我们在公司里面开发的时候,真正的是使用的Linux环境进行开发和线上代码运行的。在学习的过程中,我建议:快、快、快。少纠结、代码能跑就行。此处,推荐使用XAMPP、AppServ、PHPStudy、WampServer等工具快速安装完成,开始自己的第一段
~~~
<?php
phpinfo();
~~~
四、 基本语法环境搭建完,开始要学习的东西有以下一些东西了:变量、数据类型、注释、常量、if…else、swith…case、while、do..while、for、运算符、数组、函数、常用函数;这些过程当中,很多小白容易纠结为啥啥都写不出来呢。此外,全是些基本语法,一定要记住,多写多记多背。在心理上觉得啥都写不出来是很正常的。
五、 面向过程使用阶段在这一阶段就能够写出东西来了,学完MySQL数据库后立马开始学习PHP连接数据库吧,学习完成后写个留言本、分页、再学个cookie和session实现用户登陆、注册。学个GD后开始实现个验证码吧。最后在这个阶段你可以写一个论坛、贴吧或者商城出来。
六、 面向对象和MVC在这个阶段不要再看PHP5的视频了,最好看PHP7以后的视频,特别是新的一些标准,例如:composer、PSR、面向对象的设计模式等。你可以看一些千锋PHP最新的视频,这些技术点全都讲到了。这一块学习顺序:面向对象基本语法;写几个常用类;组合MVC学习设计模式学习PSR
七、 深入学学前端PHP学好了,前端课程学起来跟玩似的了。因为你已经有了一门语言的基础了。所以,学习一些JS,再学一些jQuery,bootstrap够你用了。
八、 深入ThinkPHP5.0或者Laravel深入学习一个或者两个框架,然后结合前端的知识,写二个以上的项 目出来吧。你可以写个多品类的商城、写一个OA系统等。
九、 学习Linux服务器学习Linux服务器的主要了解多服务器的部署,了解软件安装,特别是LAMP和LNMP的环境搭建。将对应的代码搭建到自己部署的服务器上去。最后买一个域名和阿里云服务器,真正的将代码部署到云服务器上去,走一次上线流程,用一下git管理一下代码会更棒。
十、 深入大并发架构的学习你非常有必要学习一下大并发架构,学一些NoSQL技术、Swoole技术、keepalived技术等多项不同的技术。让自己全面了解服务器集群下代码如何运行的更加高效。并且全面的了解一下PHP的socket、进程、线程、协程等技术,对你的代码的技术提升是很有帮助的。建议这个时候使用Redis、RockMQ写一个大并发的、多服务器的秒杀出来。这一块国内都有很多视频,视频不要再看PHP5的视频了,你可以多看看PHP7的视频。现在学习PHP已经不再是单纯的学习PHP了,到后期更多的是学服务器集群,大并发处理,按照这个路线图一点一点往前走,有问题可以在评论下面咱们相互交流。
### 学习建议
我们要有一个循序渐进的学习过程,这里先把学习PHP的过程做一下概括,这和很多学习PHP的爱好者是不谋而合的:
(1) 熟悉HTML/CSS/JS、、网页基本元素,完成阶段可自行制作简单的网页,对元素属性相对熟悉
(2) 理解动态语言的概念和运做机制,熟悉基本的PHP语法
(3) 学习如何将PHP与HTML结合起来,完成简单的动态页面
(4) 接触学习MySQL,开始设计数据库
(5) 不断巩固PHP语法,熟悉大部分的PHP常用函数,理解面向对象编程,MySQL优化,以及一些模板和框架
(6) 最终完成一个功能齐全的动态站点
新手不要看到上面的概括就以为PHP学习是很简单的,编程是需要你认真的思考和不断的实践。 下面具体解释一下PHP的学习线路。 首先,任何网站全都是由网页组成的,也就是说想完成一个网站,必须先学会做网页,掌握静态网页的制作技术是学习开发网站的先决条件。 因此我们要学习HTML,为今后制作网站打下基础。 学习HTML应该边学边做,HTML中的任何元素都要亲自实践,只有明白了什么元素会起到什么效果之后,才能深刻记忆,一味的看书是不行的
假设你已经可以完成一个静态页面了,那么就该开始了解动态语言,刚一接触动态语言,可能很多人都会拥有很多不解,代码不是作为直接输出的,而是要经过处理的,HTML是经过HTML解析器,而PHP也要通过PHP解析器,跟学习HTML一样的道理,想让任何的解析器工作,就必须使用它专用的语法结构
学习PHP,你应该感到幸运,因为如果你学过其他语言,你就会发现PHP还是相对简单的,这一阶段,你要搞清楚HTML和PHP的概念,你现在完全可以让PHP给你算算一加一、、于几,然后在浏览器输出。 不要觉得幼稚,这虽然是很小的一段代码,但是对于你的编程之路,可是迈出了一大步。 不过现在,你还是一个菜鸟
接下来就要学习数据库了,MySQL可以说是PHP的黄金搭档,我们要征服这个数据库,在你理解了数据库的概念之后,就要尝试通过PHP来连接数据库,进而会用PHP成功的插入,删除和更新数据
这个时候,你可能会处于这种状态:你会HTML吗?会,我能编好几个表格排板的网页呢!你会PHP吗?会,我会把一加一的运算写在函数里,然后调用!你会MySQL吗?会,我可以把数据库里的数据插入删除啦!
那接下来该做什么呢?尝试着做个小的留言本吧,这同样是新手面临的一道关卡。 花了一段时间,你终于学会把表单的数据插入数据库,然后显示出来了,应该说一个程序的雏形已经诞生了。 但是,你可能会看人家这个编论坛,那个开发CMS,我什么时候可以写一个呢?不要急,再巩固一下知识,熟悉了PHP和MySQL开发的要领后,再回头看你写的那个留言本,你也许会怀疑那真的是你写的吗?这个时候,你可以完善一下你写的留言本。 留言本应该加入注册以及分页的功能,可以的话,UI也可以加强
这就算学会了吗?NO,NO,NO,还早呢,你到现在还没碰过OOP呢吧?那模板和框架呢?还要继续学习呀!PHP框架提供了一个用以构建web应用的基本框架,从而简化了用PHP编写web应用程序的流程。 可以节省开发时间、、有助于建立更稳定的应用。 所以说,PHP框架是一个可以用来节省时间并强化自己代码的工具。 当你第一次选择PHP框架时,建议多尝试几个,每个框架都有自己的长处和短处,例如Zend框架由于多样的功能、、并且有一个广泛的支持系统,流行了很长时间。 而CakePHP是一个晚于Zend的PHP框架,相应的支持系统也比较少,但是更为方便和易于使用
了解了面向对象和框架后,你应该接触一下XML了,总而言之,你绝对不会发现你全部都学会了,学无止境!学东西,永远不要妄想有速成这一说,技巧再多,但是缺少努力,那也是白搭。 有一点可以保证,就是你学会了PHP,那么再学其它语言,肯定速成,反过来也一样,如果你之前学过其它的语言,那么学PHP肯定快
多借鉴别人成功的代码,绝对是有益无害,所以要多看那些经过千锤百炼凝出来的经典代码,是进步的最好方法。 另外,要强调的是,学习一项技术过程中可能会遇到困难,可能会迷茫,你也许学了一半的PHP,又开始打C#的主意,或者有人说Java很好,这个时候你绝对不能动摇,要坚持到底,彻底学会。 祝你顺利学成PHP,开发自己想要的网站
#### 最后,分享10条PHP性能优化的小技巧,帮助你更好的用PHP开发:
1、、foreach效率更高,尽量用foreach代替while和for循环
2、、循环内部不要声明变量,尤其是对象这样的变量
3、、在多重嵌套循环中,如有可能,应当将最长的循环放在内层,最短循环放在外层,从而减少cpu跨循环层的次数,优化程序性能
4、、用单引号替代双引号引用字符串以实现PHP性能优化
5、、用i+=1代替i=i+1。 符合c/c++的习惯,效率还高
6、优化Select SQL语句,在可能的情况下尽量少的进行Insert、Update操作,达到PHP性能优化的目的
7、、尽量的少进行文件操作,虽然PHP的文件操作效率也不低的
8、、尽可能的使用PHP内部函数
9、、在可以用PHP内部字符串操作函数的情况下,不要用正则表达式
10、feof、fgets、fopen、在可以用file_get_contents替代file、系列方法的情况下,尽量用 file_get_contents,因为它的效率高得多。 但是要注意file_get_contents在打开一个URL文件时候的PHP版本问题
- Thinkphp5
- 目录结构
- Url和路由
- PHP
- PHP常用函数
- 学习PHP之路
- 自定义有用函数
- Gif验证码动图
- 单态
- 字符串
- PHP的echo输出内容过多会很慢
- PHP中的大括号{}使用
- PHP性能优化:使用isset()判断字符串长度比strlen()更快
- php被遗忘的强大的字符串处理函数
- php如何将html中的br换行符转换为文本输入中的换行符
- PHP字符串转义函数(addslashes,stripslashes)详解
- 如何知道服务器是否支持Gzip压缩
- PHP合并数组+与array_merge的区别
- PHP利用正则过滤各种标签,空格,换行符的代码
- PHP数字判断函数
- PHP中0和空的区别
- PHP中的session和cookie的区别
- PHP过滤字符串函数
- PHP中empty,is_null,isset的区别详解
- PHP获取utf8字符串的字符长度
- PHP函数总结
- php取汉字的第一个字的首字母
- php计算两个时间戳之间相差的日时分秒的两种方法
- php中array_push 与 $arr[]=$value 性能比较分析
- PHP给源代码加密的几种方法
- 计算二维数组中某一元素Key之和
- 常用函数(String&Array&math)
- String去空格或其他字符串
- String字符串生成和转化
- String大小写转换
- StringHtml标签相关
- String字符串比较
- String字符串查找和替换
- String字符串的切割和拼接
- String字符串统计
- String字符串编码
- Array创建数组
- Array数组的合并和拆分
- MySQL多表查询
- TP5源码阅读
- Loader
- View
- 项目实践
- 图书管理系统
- 系统需求分析
- 数据库设计
- javascript实例
- 基础
- 1.switch语句流程控制
- 2.比较运算符
- 3.表达式计算顺序
- 4.单击按钮时调用函数
- 5.递增、递减运算符
- 6.定义css样式表
- 7.多个函数同时调用
- 8.多条件的选取(if)
- 9.多重选取(if)
- 10.加载一个外部的CSS样式表
- 11.检查变量的类型
- 12.检查变量是否存在
- 13.将1--10之间的奇偶数分开
- 14.将数字转化为字符串
- 15.字符串转换为数字
- 16.矩形面积计算
- 17.绝对值函数的使用
- 18.例外处理
- 19.链接两个数组
- 20.逻辑运算符
- 21.判断一个对象是否存在
- 22.平方根函数的使用
- 23.球体面积计算
- 24.取得对象的编号
- 25.取得类别的名称
- 26.取得两个数中的最大数
- 27.取得数组的大小
- 28.取整函数的使用
- 29.三角形面积计算
- 30.三元运算符
- 31.删除数组变量
- 32.声明数组
- 33.声明一个对象
- 34.声明一个自定函数
- 35.使用javascript
- 36.使用vbscript
- 37.使用with省略对象名称
- 38.显示input框输入值
- 39.使用对象
- 40.使用循环存取数组
- 41.数组排序sort
- 42.双重选取(if)
- 43.四舍五入函数的使用
- 44.算术赋值运算符
- 45.算术运算符
- 46.随机函数
- 47.条件选择(if)
- 48.危险(使用无穷循环冻结网页)
- 49.圆形面积计算
- 50.在JavaScript中使用变量
- 51.在指定的时间调用一次函数
- 52.在指定的时间反复调用函数
- 53.在指定外部Behavior文件作为JavaScript来源
- 54.指定一个js文件作为JavaScript来源
- 55.重复执行(for)
- 56.重复执行(while)
- 链接
- 1.按钮式超链接
- 2.超链接确认对话框
- 3.单机按钮链接到指定的网页
- 4.定时改变超链接文字的颜色
- 5.定时滚动超链接
- 6.定时前往其他页面
- 7.关闭窗口超链接
- 8.取得目标页面中的网址
- 9.取得页面的超链接数
- 10.取得页面中所有超链接地址
- 11.设定超链接样式
- 12.随机产生超链接地址
- 13.随机显示网页
- 14.页面载入等待
- 15.制作登录的密码验证功能
- 事件
- 1.单机跟双击鼠标事件
- 2.给网页设定快捷键
- 3.跟随鼠标移动的图片
- 4.跟随鼠标移动的文字
- 5.检查是否按下Ctrl、alt、shift
- 6.跟随鼠标移动的星星
- 7.将按下的按钮显示在页面上
- 8.交换式图片按钮
- 9.进入、离开网页显示信息
- 10.禁止单击鼠标右键
- 11.绝对禁止单击鼠标右键
- 12.可以鼠标拖动文字
- 13.取得按键的ASCII码
- 14.取得按下的按键
- 15.取得键盘的方向键
- 16.取得鼠标的按键
- 17.取得鼠标在网页中XY坐标
- 18.取得鼠标xy坐标
- 19.使用鼠标拖动图片
- 20.使用外部鼠标指针样式
- 21.鼠标经过是改变一列表格的样式
- 22.鼠标控制文字的滚动
- 23.网页弹出菜单
- 24.网页树形目录
- 25.网页下拉菜单
- 26.显示不同的鼠标指针样式
- 27.显示或隐藏图片
- 28.用方向键来控制图片移动
- 29.在超链接上显示提示信息
- 30.在鼠标单击出显示图片
- 表单处理
- 1.查看文字字段的内容
- 2.从文件字段中选取一个图片作为背景图
- 3.带标签的复选框
- 4.单机选项按钮改变背景颜色
- 5.读取表单所有元素的名称
- 6.防止表单多次发送
- 7.改变目前选取的选项按钮颜色
- 8.改变文字区域的宽度
- 9.改变文字字段中文字对齐的方向
- 10.检查两个复选框是否同时选择
- 11.检验一个复选框是否选中
- 12.检验一组复选框是否选中
- 13.检验一组选项按钮的选择情况
- 14.接触所有复选框的选取
- 15.连动方式选项按钮
- 16.取得文字中选取图片的高度
- 17.取得列表选取的多个值
- 18.取得文件中选取的文件名称
- 19.取得文件字段中选取图片大小
- 20.取得文件字段中选取文件的扩展名
- 21.取得文字区域中文字的行数
- 22.取得下拉菜单中的选取值
- 23.取得下拉菜单中选取项目的索引值
- 24.全选或取消的复选框
- 25.全选所有复选框
- 26.使用E-Mail发送表单
- 27.使用键盘选择文字字段
- 28.使用文字字段取得focus
- 29.鼠标经过改变文字边框颜色
- 30.鼠标经过改变文字背景颜色
- 31.鼠标经过改变文字颜色
- 32.鼠标经过时选取文字
- 33.双重输入文字
- 34.随机设置表单的发送地址
- 35.跳页菜单的实现
- 36.图片发送按钮
- 37.文字字段自动调整大小
- 38.限制文字区域输入文字字数
- 39.限制文字区域输入文字行数
- 40.相当于发送按钮的超链接
- 41.相当于重置按钮的超链接
- 42.验证文字字段是否有输入资格
- 43.验证输入的日期格式
- 44.验证输入的日期格式2
- 45.验证输入的是否为数字
- 46.验证输入的是否为邮箱
- 47.验证输入的是否为字母
- 48.一个简单的计算器
- 49.以图片显示输入的数字
- 50.允许或禁止对整个表单的访问
- 51.在文字区域中添加一行文字
- 52.在文字区域中移动光标的位置
- 53.在新窗口中打开网页
- 54.在新窗口中显示表单内容
- 55.制作谷歌搜索表单
- 56.自动切换为英文输入模式
- 图片处理
- 1.定时更换图片
- 2.改变图片重叠顺序
- 3.滚动图片
- 4.灰度、相反、X光效果
- 5.禁止图片下载
- 6.漫天飞舞的雪花
- 7.每隔一段时间更换广告图片
- 8.设定背景的渐变效果
- 9.使用百叶窗效果来更换图片
- 10.使用水平棋盘来更换图片
- 11.始终在右下角的图片
- 12.水中倒影的效果
- 13.随机水平细纹效果来更换图片
- 14.随机显示图片
- 15.图片不停闪烁效果
- 16.图片大小变换
- 17.图片渐变出现
- 18.图片扭曲变形效果
- 19.图片渐隐效果
- 20.相片选择器
- 21.移动图片位置
- 22.预先载入图片
- 检查与验证
- 1.检查是否为ip地址
- 2.检查是否为url
- 3.检查是否为电子邮件地址
- 4.检查是否为日期
- 5.检查是否为时间
- 6.检查是否为数字和字母
- 7.检查是否为邮政编码
- 8.检查是否为数字
- 9.检查是否为字母
- 10.利用正则表达式出去字符串
- 日期与时间
- 1.带开关的时钟
- 2.倒影计时
- 3.分别取得当前时分秒
- 4.分别取得目前年月日
- 5.计算未来的时间
- 6.节日倒计时
- 7.取得距离基准时间制定的毫秒
- 8.全中文日期显示
- 9.显示时间停留
- 10.显示有上下午时间
- 11.显示指定日期
- 12.以本地格式显示日期/时间
- 13.在标题栏中动态显示日期
- 14.在标题栏中显示日期
- 15.在不同时间显示不同的提示
- 16.在网页中显示目前的日期/时间
- 17.在网页中显示目前是星期几
- 18.在网页中显示中文日期和中文星期
- 19.在文字蓝中动态显示时间
- 20.在页面指定位置动态显示时间
- 21.在状态栏中动态显示时间
- 22.在状态栏中显示日期
- Browers
- 1.获取操作系统名称
- 2.获取浏览器版本
- 3.检查浏览器安装的插件
- 4.检测是否安装了Flash插件
- 5.获取用户信息
- 6.获取浏览器名称
- Cookie
- 1.获取Cookie的值
- 2.记录浏览网站的时间
- 3.记录浏览者的姓名
- 4.记住登录账号和密码
- 5.检测浏览器是否关闭了cookie
- 6.将资料写入cookie
- 7.显示浏览次数
- 8.只显示一次弹出式窗口
- Document
- 1.查看网页属性
- 2.查看网页源文件
- 3.查看指定网页的源文件
- 4.打开'页面设置'对话框
- 5.打印网页
- 6.导出'收藏'
- 7.导入'收藏'
- 8.防止网页被他人加入叶框
- 9.更换内置页框的内容
- 10.回到浏览器首页
- 11.将连接的页面显示在右叶框
- 12.将网页设定成桌面项目
- 13.将网页加入收藏
- 14.将网页设为首页
- 15.另存网页
- 16.满天星背景
- 17.上一页/下一页
- 18.前往指定页
- 19.取得屏幕的色彩品质
- 20.使用百叶窗效果来切换网页
- 21.同时卷洞两个页框
- 22.为网页访问设置时间限制
- 23.显示“整理收藏夹
- 24.显示网页最后的更新时间
- 25.显示浏览器访问过的网站数
- 26.语言首选项
- 27.载入网页进度条
- Window
- 1.不能改变窗口大小
- 2.不能最小化窗口
- 3.窗口从天而降效果
- 4.窗口自动乡下卷动
- 5.窗口缩小效果
- 6.窗口自动向右卷动
- 7.弹出多个窗口
- 8.弹出广告窗口
- 9.弹出式窗口
- 10.弹出一个顶层窗口
- 11.弹出一个居中显示的窗口
- 12.弹出一个全屏窗口
- 13.弹出一个无属性栏的窗口
- 14.弹出一个新窗口
- 15.弹出一个自动关闭窗口
- 16.改变窗口滑块样式
- 17.改变浏览器地址显示的图标
- 18.关闭窗口
- 19.将弹出式窗口资料输入的主窗口
- 21.警告对话框
- 22.取得屏幕大小
- 23.取得浏览器大小
- 24.去掉窗口滑块
- 25.全屏幕窗口
- 27.让滑块在窗口左边出现
- 28.设定浏览器的窗口大小
- 29.使浏览器适合屏幕大小
- 30.是浏览器窗口显示于屏幕中间
- 31.使浏览器窗口显示于屏幕左侧
- 32.使浏览器位于窗口右下角
- 33.输入对话框
- 34.双击鼠标卷动窗口单机鼠标停止卷动
- 35.提示浏览器者更改分辨率
- 36.显示网页对话框
- 37.显示网页对话框-网页对话
- 38.以顶层模式显示对话框
- 39.允许调整弹出窗口的大小
- 40.在弹出的窗口中显示标准按钮
- 41.在弹出的窗口中显示菜单
- 42.在弹出的窗口中显示地址栏
- 43.在弹出的窗口中显示滑块
- 44.在弹出的窗口中显示状态栏
- 45.在弹出的窗口上关闭主窗口
- 46.在警告对话框中显示多行信息
- 47.在主窗口上关闭弹出窗口
- 48.震动窗口
- 49.指定弹出窗口的位置
- 50.指定浏览器窗口的位置
- 文本
- 1.半透明文字
- 2.不断变色的文字
- 3.产生渐变颜色的文字效果
- 4.从左至右搜索字符串
- 5.淡入淡出的文字效果
- 6.动感的loging文字
- 7.动感标题文字
- 8.动态缩放文字
- 9.发光特效文字
- 10.反弹文字
- 11.获取部分字符串
- 12.取得字符串长度
- 13.取得字符串中指定文字的字符串
- 14.浏览者自己选择文字颜色
- 15.浏览者自己选择文字大小
- 16.闪烁文字
- 17.升降文字
- 18.使用指定的字符分割字符串
- 19.鼠标移上去来改变文字样式
- 20.鼠标移上去来改变文字颜色
- 21.鼠标移上时文字显示阴影
- 22.水波文字
- 23.搜索字符串
- 24.文字从左边移动到右边
- 25.文字来回反弹
- 26.阴影特效文字
- 27.影藏显示文字
- 28.英文字母大小转换
- 29.逐行显示文字
- 30.逐字变换文字颜色
- 31.逐字显示文字
- 其他
- 1.猜数字游戏
- 2.反转文字
- 3.计算复利
- 4.检查是否为闰年
- 5.取得网络下载速度
- 6.在网页之间传递参数
- 商务通
- 1.商务通核心教程
- 2.商务通跳转代码(php和html两个版本)
- 3.商务通打开对话窗口容错代码
- 4.商务通隐藏默认邀请框代码
- 5.商务通轨迹代码未加载出来前执行的打开商通对话的函数
- 6.**不错的base.css
- 7.获取百度搜索关键词
- 8.商务通隐藏代码
- Jquery
- 1.选择器,过滤器
- 2.属性操作与样式操作
- 3.DOM操作
- 4.$与对象
- 5.each()
- 6.this与$(this)
- 7.DOM事件操作
- 8.动画
- 9.Ajax
- 杂项
- 二维码API接口
- 小程序项目
- 印象笔记
- 1.首页
- 2.待办事项管理页