一名合格的PHP工程师的知识结构是怎样的?

其实很多人特别是新手,很难一开始去了解一个php工程师的知识结构是怎么样子的,我看到知乎上面一些回答还不错,做些整理备份:

作者:justin
链接:https://www.zhihu.com/question/19875503/answer/13251475
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

1.掌握语言本身的语法,熟悉常用类库是必须的;
2.面向对象最为当今的主流也是必须掌握的;
3.常用设计模式必须掌握,设计模式是前辈的总结、经验;
4.php常与数据库配合使用,而且首先为mysql,所以mysql必须熟悉;
5.php是做为一种web开发语言而流行的,所以浏览器中的javascript必须会,虽然现在很多公司有专业的javascript工程师,但是php程序员js也是必须掌握的;
6.html/css必须会,不要求你会切会div+css,但是至少要知道,因为php是一种嵌入html中使用的语言(当然php也可以用于桌面等其他,但是和web(html)结合才是它流行的原因);
7.linux不需要会,会的话肯定更好,一般公司都有专门服务器管理人员的。但是你要会在vi下进行编程,这时候就不像在ide下那么好了,你应该尽量熟悉类库。

其实以上的7点都很针对于web开发,需要掌握的知识,其实是和语言本身没什么关系的,应该说 和做的项目有很大的关系,就假如要你用php写一个web操作系统,这样操作系统的设计思想你是要知道的吧。语言只是一个工具, 大学4年的课程,也就是知识结构了,与语言没什么关系

作为做了几年php开发的程序员我说下个人的看法:

1 如果是程序员的话,不管你是ruby、python、java、.net、c、c++,还是php,你可能都需要学习这些语言的基本知识,这个语言的函数库,或者是类库,那是越熟悉越好
2 对于web应用开发的程序员,你肯定要熟悉数据库和sql编程,那肯定是越熟悉越好,而且对于javascript和css也是如此,越熟悉越好
3 对于数据库和服务器的配置,这不应该是你需要花很多精力的地方,因为这是运维人员的工作,如果某个公司对这个有要求,那他们估计就没有运维人员,这些东西很繁琐,而且需要实践,所以建议不要花太多的实践在这上面,了解就可以
4 对于设计模式也是了解为主,你可能会用到设计模式的地方很少,而且如果你真正对编程有感觉了,一段时间的实践之后你自然知道怎么用,哪些总是喜欢把设计模式、编程思想挂在嘴边的基本都是没毕业的
5 如果可以的话,我建议使用linux系统,学习Vim,并且学习apache,php,mysql的编译,不过如果你坚持用linux系统的话,那你肯定会试着自己编译这些东西的
6 多看php手册,学好英文,有什么问题首先看手册
7 学习敏捷开发,学习使用PHPUnit、SimpleTest这些工具写单元测试,并且在实际的项目中使用
8 如果要深入点的话,学习PHP扩展的开发,也许你可能不会开发扩展,但如果你了解了如果开发一个扩展,你就会知道PHP并不是想很多说的那么简单
9 学习并使用PHP的框架,如果你用了某个框架1-2年,那就试着去看下它的源代码,并试着理解那些代码,如果可以的话试着自己开发一个框架
10 所有程序语言都说用来解决具体的问题的,语言很重要,学好用好一门语言并不是一天两天的事,不要相信哪些给你兜售编程思想的人,思想是在实践中积累的,而不是看了书学了别人的思想就会了,然后就什么都可以写了
11 学习算法,锻炼思维
其实phper也是分前端和后端的,面向前端PHPer需要掌握的知识
  1. div+css这个不一定要去精通,但是要熟悉和掌握
  2. js这个也是要掌握的,尤其是jquery框架,目前很主流,一些页面特效或者与PHP交互的ajax效果经常要使用到
  3. php这个语法基础和类库要熟练掌握,php手册可以经常翻阅一下,php模板引擎,php框架都是需要。
  4. php对mysql的常见操作和优化也是必须的
面向后端的PHPer:
  1. lamp环境自己要会配置,一些websever配置要懂得,常用的linux命令和一些简单的shell脚本要回写
  2. 不仅要理解mysql的工作原理,一些基于mysql源码级的优化也需要掌握了
  3. java或c的语言基础可能也需要一些,php并不能解决所有问题,当phphold不住的时候可以考虑在websever上做一些必要模块开发,或者利用os资源,例如GD类库处理图像性能并不一定很好,完全可以使用 ImageMagick来尝试一下
  4. php源码和mysql源码都是有必须要研究的

一.Linux方面

Linux常用命令
1. 文件处理命令
2. 权限管理命令
3. 帮助命令
4. 文件搜索命令
5. 压缩解压命令
6. 命令使用技巧
7. 文本编辑器Vim
掌握Linux常见命令操作,学会Linux基本使用,熟悉Linux下文本编辑器。

Linux系统管理
1. 软件包管理
2. 用户和用户组管理
3. 服务与进程管理
掌握Linux系统常见的系统管理操作。

Linux网络应用
1. 基本网络设置
2. 网络文件共享
掌握Linux系统常见的网络配置文件和命令,熟悉文件共享服务SSH、FTP。

LAMP环境编译及Apache配置
1. LAMP环境编译
2. Apache基本选项及应用案例
掌握源代码包编译构架LAMP环境,学会Apache的基本配置及典型互联网应用配置。
================================================================
二.对象的程序设计

面象对象的介绍
1. 类和对象之间的关系
2. 面向对象的程序设计
面向对象是PHP5中的新加功能,也是PHP以后编写代码的方式,掌握面向对象在行业中的应用,并了解一些基本的面向对象的声明语法。

如何抽象一个类
1. 类的声明
2. 成员属性
3. 成员方法

通过类实例化对象
1. 创建对象
2. 对象类型在内存中的分配
3. 对象中成员的访问
4. 特殊的对象引用“$this”
5. 构造方法与析构方法
掌握对象在程序中的应用,在内存中的分配形式,还要对象中的成员访问方式,并要掌握构造和析构以及关键字$this 使用。

封装性
1. 设置私有成员
2. 私有成员的访问
3. __set()、__get()、__isset()和__unset()
4. 四个方法
使用面向对象一定要使用他的三大特性,封装就是其中之一,掌握封装的意义以及封装的应用和各种与封装有关的魔术方法。

继承性
1. 类继承的应用
2. 访问类型控制
3. 子类中重载父类的方法
继承性也是面向对象的三大特性之一,需要掌握继承的意义与应用,访问控制和重载的方式。

常见的关键字和魔术方法
1. final关键字的应用
2. static和const关键字的使用
3. 克隆对象
4. 类中通用的方法__toString()
5. 通过__call()方法处理错误调用
6. 自动加载类
7. 对象串行化
在PHP的面向对象的程序设计中会用动一些常见的关键字和一些常用的魔术方法,需要全部掌握,并可以灵活运用。

抽象类与接口和多态
1. 抽象方法和抽象类
2. 接口技术
3. 多态性的应用
了解抽象类和接口的作用,并掌握他们的声明与应用,重点掌握多态性的应用。

与类和对象有关的系统函数
1. 与类有关的系统函数
2. 与对象有关的系统函数
PHP中提供的类和对象有关的函数不多,但比较常用

常用功能类的编写
1. 分页类
2. 验证码类
3. 图像处理类
4. 文件上传类
5. 数据验证类
通过这几个类的编写,不仅可以方便你在所有PHP项目中通用这些功能类,还可以对面向对象技术进行总结。
==============================================================
三.抽象层PDO

PDO所支持的数据库
1. PDO的应用及所支持的数据库
掌握PDO的应用原理和驱动设置,以及PDO的安装方法,并可以以多种方式创建PDO对象,和面要了解PDO对象中的成员。

创建PDO对象
1. 以多种方式调用构造方法
2. PDO对象中的成员方法

使用PDO对象
1. 调整PDO的行为属性
2. PDO处理PHP程序和数据库之间的数据类型转换
3. PDO的错误处理模式
4. 使用PDO执行SQL语句
需要掌握PHP中的各种属性的应用、设置和读取,以及PDO的错误处理模式,还需要了解通过PDO执行SQL语句。

PDO对预处理语句的支持
1. 了解PDOStatement对象
2. 准备语句
3. 绑定参数
4. 执行准备好的查询
5. 获取数据
PDO的预处理对象,可以完成PHP程序和数据库之间的各种操作。需要掌握如果使用PDO准备预处理语句,和绑定参数、执行准备好的语句,获取数据和大数据对象的存取,并可以使用PDO完成事务处理操作。

PDO的事务处理
PDO的事务处理方式
================================================================
四.脚本JavaScript

JavaScript语法
1. JavaScript应用概述
2. JavaScript脚本中变量与运算符
3. JavaScript流程控制和函数
4. JavaScript中数组和对象的创建及应用
可以完成JvavaScript的所有语法的学习,以及和HTML和CSS联合使用,并可以编写一些页面中常见的脚本程序。

DOM编程
1. DOM及DHTML的应用介绍
2. 各种事件及事件处理程序的应用
3. 窗口window对象的属性和方法
4. 文档document对象的应用
5. 其location、body、form、screen等对象的使用

学会页面中DOM的灵活应用、事件处理,还有各种DOM对象的属性和方法,以及网页中所有特效的编写。
================================================================
五.Ajax

Ajax的应用
1. Ajax概述
2. Ajax定义
3. 使用Ajax创建Ajax的引擎
4. Ajax Web应用模式(异步)
5. AJAX 开发中的应用
6. 编写和应用自定义的Ajax类
7. 使用Ajax完成XML的操作
8. 在Ajax应用Json技术
9. Ajax3.0的应用
要了解异步传递数据的方式,并掌握创建AJAX对象和应用AJAX对象中的属性和方法。
==================================================================
六.Ajax与JQuery框架应用

JQuery的使用
1. JQuery的概述
2. JQuery的核心方法
3. JQuery的选择器
4. JQuery的属性
5. JQuery的筛选和文档处理
6. JQuery的CSS应用
掌握在HTML文件中添加JQuery的应用,可以使用JQuery中的核心方法,以及常用选择器的使用,和一些常用的JQuery方法。

JQuery的Ajax应用
1. JQuery的事件
2. JQuery的效果
3. 使用JQuery中的AjAX应用
Ajax是JQuery重点实现的技术,掌握JQuery中的几种实现方法。
===============================================================
七.设计模式

MVC模式
1. MVC模式介绍
2. 视图
3. 控制器
4. 模型
5. 模块和操作
6. 主入口文件
7. MVC模式应用

需要掌握MVC的设计模式,包括视图、控制器、模型的应用。其他的设计模式最好也要会使用。
============================================================
八.代码规范

PHP编码规范
数据库规范设置
模板编写规范

1. 适用范围
2. 开发工具
3. PHP的文件格式
4. 注释规范
5. 空行和空白
6. 字符串的使用
7. 命名原则
8. 语言结构
9. 数表表的设计
10. 索引设计原则
11. SQL语句的设计
12. 模板设计规范
=============================================================
九.版本控制

github和svn
==============================================================
十.框架
了解一些框架,比如Laravel,Yii,CodeIgniter,ThinkPHP之类的
1 http协议
2 缓存 与数据库
3 php内存分配原理
4 scoket编程
5 服务器配置与服务器管理。
6 算法与数据结构
7 sql 性能分析与优化
8 系统容灾、高负载设计
我按照重要性列举一下:
1.设计思想:编程语言没有好坏之分,重要的是你的思想 (小孩和成人手里拿笔画出的东西肯定不同,对画出的画解释也不同)。思想的知识构成:
1> 数据结构、设计模式等( 其实每种数据结构和设计模式就是种设计思想 )
2>《java编程思想》,也可以对比一下yii、ci、zend框架各自的优点和缺点,吸取设计思想
3> 每种设计思想里面操作的对象可能是一种数据结构、memcache的key、数据库db/table/field、div、ip、idc等等
2.筛选工具:带着思想去筛选工具。
1>你需要php提供一个函数去检测单态模式,就需要自己学习c写个扩展
2>你需要用php查询数据库就学习mysql和pdo相关
3>你需要在页面调试php又觉得输出出来的数据格式不好看,就去学习html+css+div
4>memcache、nginx、apache同理
  1. PHP语言
  2. HTTP协议
  3. HTML
  4. SQL(MySQL)
  5. 服务器(Apache/Nginx)
  6. 缓存(Redis,Memcache)
  7. 测试工具(ab,..

1)、对计算机的理论需要有基本的了解, 对数据结构知识要熟练掌握。理解各种数据结构的特征,应用场景。能够和具体的工作联系起来。

2)、熟练掌握PHP语法,熟悉常用类库,对字符串库、正则库必须熟练掌握。

3)、理解、掌握常用设计模式,最好能研读一些通用的框架源码。

4)、对前端和后端知识都需要了解。掌握前端div+css+js,尤其是jquery框架。

5)、掌握php对mysql,memcache的常见操作和优化。

6)、熟悉常用的linux命令,能够写一些简单的shell脚本。


来自:Avazu Holding刘冉冉

我们公司内部的,供参考:

PHP工程师知识体系结构

(2015-12-05)


知识结构:

1. PHP编程:变量、常量、字符串、数组、控制结构、数据库、类、继承、多态

2. MYSQL命令:INSERT、UPDATE、DELETE、SELECT、GROUP、COUNT、JOIN、索引

3. Linux命令:文件、权限、安装LAMP、nginx、Vim文件编辑、压缩解压、搜索

4. MVC框架:CodeIgniter、控制器、模型、视图、入口文件、类库

5. 前端:HTML、CSS、JS、DOM(window/document)、JQuery(选择器/方法)、Ajax、Json

6. 团队协作:SVN、GITHUB、API开发

7. 并发性能:Memcache、集群、资源服务器、AB并发测试与调优

8. WEB安全:SQL注入、验证码、刷新提交、漏洞扫描、DOS攻击、跨域攻击

9. 架构与部署:ECS、RDS、OCS、OSS、SLB


基础篇:PHP编程、MYSQL命令、Linux、MVC(CodeIgniter)、前端、团队协作

中级篇:并发性能、WEB安全

高级篇:架构设计、阿里云部署

个人认为一名合格的PHP应该具备以下知识:
1. 熟悉PHP语法,熟悉大多数常用PHP内置函数,可以不借助手册写出大部分程序。
2. 熟悉面向对象的分析设计方法。
3. 熟悉数据库基本理论,熟悉SQL,熟悉MYSQL,可自行根据业务逻辑设计出高效的数据库结构。
4. 熟悉Linux操作系统,可以自己配置Apache/Nginx、MYSQL、PHP。

在 WEB 开发世界里,PHP 是最流行的语言之一,从 PHP 里,你能够很容易的找到你所需的脚本,遗憾的是,很少人会去用“最佳做法”去写一个 PHP 程序。这里,我们向大家介绍 PHP 的 10 种最佳实践,当然,每一种都是经过大师们证明而得出的。

1. 在合适的时候使用 PHP – Rasmus Lerdorf

没有谁比 PHP 的创建者 Rasmus Lerdorf 明白 PHP 用在什么地方是更合理的,他于 1995 年发布了 PHP 这门语言,从那时起,PHP 就像燎原之火,烧遍了整个开发阵营,改变了互联网的世界。可是,Rasmus 并不是因此而创建 PHP 的。PHP 是为了解决 WEB 开发者的实际问题而诞生的。

和许多开源项目一样,PHP 变得流行,流行的动机并不能用正常的哲学来进行解释,甚至流行得有些孤芳自赏。它完全可以作为一个案例,一个解决各种 Web 问题的工具需求所引起的案例,因此当 PHP 刚出现的时候,这种工具需求全部聚焦到 PHP 的身上。

但是,你不能奢望 PHP 可以解决所有问题。Lerdorf 是第一个承认 PHP 只是一种工具的人,并且 PHP 也有很多力所不能及的情况。

根据工作的不同来选择合适的工具。我跑了很多家公司,为了说服他们部署和使用 PHP,但是这并不意味着 PHP 对所有问题都适用。它只是可以一个解决大部分问题的 front-end 脚步语言。

作为一个 web 开发者,尝试用 PHP 解决所有问题是不科学的,同时也会浪费你的时间。当PHP 玩不转的时候,不要犹豫,试用一下其他的语言吧。

2. 使用多表存储提高规模伸缩性– Matt Mullenweg

没有人愿意质疑 Matt Mullenweg 在 PHP 方面的权威性,他开发了这个星球上最流行的blog 系统,(依靠一个强大的社区力量支持): WordPress. 创建 Wordpress 以后,Matt 和他的团队启动了 WordPress.com 平台,一个基于WordPress MU 的免费 blog 站点。现在,Wordpress.com 已经拥有大约 400 万用户,这些用户每天提供超过 140,000 篇的日志。

如果有人知道如何让网站的规模伸缩自如,这个人一定是 Matt Mullenweg。2006 年的时候 Matt 对 Wordpress 的数据结构进行了前瞻性的改进,并且解释了为什么 Wordpress MU 对每个 blog 使用独立的 MYSQL 表格, 而不是把所有的 blog 数据都塞进一个巨大的表格。

我们测试过这个方法,但是发现如果要扩展它的伸缩性,代价太高。如果用一个整体的数据结构,在大流量面前,你将会面临服务器硬件的问题。在 MU 里面。用户们都被分布到独立的表格当中,并且可以轻易地组织起来。举个例子,WordPress.com 把用户的数据分散存储到 4096个数据库中,这些数据库可以分散大规模的数据访问,实现流量和压力分流。

数据表的可迁移性让代码(blog)可以运行得更快,并且让系统具备更强的伸缩性。依靠强大的缓存策略和灵活的数据库运用策略, Matt 向人们展示了时下最流行的 Facebook 和 Wordpress.com 都可以在 PHP 下稳定运行,并且处理惊人的访问量。

3. 千万不要相信用户 – Dave Child

Dave Child 是 Added Bytes (previously ilovejackdaniels.com) 网站的核心人物,这个网站以他出色的《cheat sheets for many programming languages》而闻名。 Dave 为很多英国的公司服务,并且已经在编程世界里树立起相当的权威。

Dave 为 PHP 开发者提供了很多深谋远虑的建议,并总结成了《writingsecure code in PHP》:千万不要相信你的用户,他们甚至可能会伤害你。

有一条 web 开发的基本原则,我重复多少遍都觉得不够,那就是:千万不要相信你的用户,同时要假设你网站中的每个数据单元都是从用户那里收集来的恶意代码。很多时候,你必须用 JAVAscript 在客户端检验表单提交过来的内容, 如果你习惯了如此,那么,这是一个好习惯。如果安全性对你来说很重要,这就是最重要最需要学习的原则。

Dave 目前正致力于为它的《Writing Secure PHP》系列书籍整理实例,书的最后他说:

最后,变得偏执一点吧。除非你认为你的站点永远不会受到攻击,否则就正视所有的问题,当问题真正发生的时候,你的情况会变得很糟。你需要把每个用户都看成会带来一场攻防站的黑客,想尽一切办法来保护站点的安全,同时想好相应问题的解决方案。

4. 多使用 PHP 缓存 – Ben Balbo

Ben Balbo 开发了 Site Point,一个为 developers 和 designers 提供指导的网站。他是墨尔本PHP 开发和开源俱乐部的成员, 因此他对 PHP 有一定的了解,同时对 PHP caching 有一定的想法和经验。

如果你拥有一个访问量很大,但更新并不频繁的站点(比如 blog,基于某种 CMS),或许它需要进行一些改造,这些改造不会花费太多的时间,但是对性能有突出的贡献。如果要为一个复杂/更新频率很快的站点建立缓存机制,过程可能会很曲折,但是好处也是显而易见的。

PHP 缓存技术有很多种,Ben 为我们推荐了如下一些:

缓存函数的运行结果

设置过期时间

缓存 IE 下载的文件

模板缓存技术

Cache_Lite

由于 PHP 作为动态语言的特性,缓存机制对于更新频率并不快的站点来说非常重要。

5. 使用 IDE, Templates 和 Snippets 加速 PHP 开发 – Chad Kieffer

当 Chad Kieffer 从 UI 设计和数据库优化的工作中抽身出来的时候,他会在他的博客 2 tablespoons 上分享很多技术经验。由于Chad 多方面的全面发展,他经常可以发现其他程序员不能发现的问题,并形成相关经验,尤其是他开发网站的方法。他参与了网站开发的各个环节,因此他的建议对于提高网站开发的大局观非常有用。

Chad 认为使用 Eclipse PDT (Eclipse’s PHPdevelopment package) 这样的 IDE,同时使用一些模板技术和开源项目可以有效地提高 PHP 的开发速度。

紧凑的计划,长长的 to do lists 以及 deadlines 让开发人员非常苦闷。不过有些功能,比如 Eclipse Templates,可以有效减少编码的时间和出错的几率。

通常来说,任何项目都可以自动化,自动化程度越高, 你完成项目的时间就越短。花时间来开发使用频率很高的框架和模板,将会节省你以后更多时间。同时,使用像 Eclipse and the PDT package 这样的 IDE,你会发现效率得到明显提高,IDE 可以自动闭合,补全分号并且可以在本地 debug。

6. 利用好 PHP 的过滤函数 – Joey Sochacki

或许 Joey Sochacki 并不像 Matt Mullenweg 那样有名 ,但他也是一个经验丰富的开发者,并且通过他的博客 Devolio 分享了很多技术经验

Joey 发现在编写 php 代码的过程中有很多地方需要进行过滤,但却并没有太多的 coder 关注 php 的内置过滤函数。

过滤数据是我们经常需要做的事情,但是很多功能丰富的 PHP 内置过滤函数却不为人知。使用类似filter_* 的 PHP 内置函数,我们几乎可以处理所有的过滤任务,包括数据类型验证/URL/email 和 IP 地址验证/特殊字符处理等等。

过滤是一件复杂的事情,但是我相信 joey 的发现会给你很多启发,让你认识到 PHP 强大的过滤功能。

7. 使用 PHP 框架 – Josh Sharp

对于是否应该使用 Zend, CakePHP,Code Igniter, 或者其他 PHP 框架,一直存在着很多争议,但是在 web 开发者的心中,他们有自己衡量的标准。

Josh Sharp 自己创建了一家提供面包和黄油服务的网站,因此他对于使用 PHP 框架来开发网站有一定的经验。他认为使用一个PHP 框架来进行项目开发(use a PHPframework ),可以有效地节省时间,并且减少出错的几率。为什么?因为他觉得 PHP 实在是太好上手了。

PHP 的易于使用有时候也有缺陷,因为并不严格的语法,经常会导致很多错误代码的诞生。但如果使用一个 PHP 框架,出错的几率就会大大减少。

PHP 框架可以让你的代码结构更加规范,并且节省大量时间。

8. 不要使用 PHP 框架 – Rasmus Lerdorf

与 Josh 的观点恰恰相反,PHP 的鼻祖 Rasmus Lerdorf 却认为最好不要使用 PHP 框架,为什么?因为不基于框架的 PHP 性能更好。Rasmus 在 Drupalcon 2008的演讲上,用“Hello World”的例子来对比了一些框架 PHP 和简单 PHP 之间的性能,结果显示框架 PHP 的性能要远远落后。

9. 使用批处理 – Jack D. Herrington

Jack Herrington 对 PHP 世界并不陌生, 并且为大名鼎鼎的 IBM developerWorks 贡献过超过 30 篇的专搞,同时出版过《PHP Hacks》的书,因此他是一个真正的专家。

Herrington 推荐使用批处理和 Cron 来代替那些可以运行在后台的程序脚步,Web 用户并不愿意在线等待你的处理过程,所以有些事情更适合放到后台来处理。

诚然,在某些情况下,这有点大材小用了,但是你可以清楚地看到,使用 Cron, MySQL, PHP 面向对象的方法以及Pear::DB 这些便捷的工具来创建一个批处理工具并不是一件复杂的事情。

Jack 认为使用 cron, PHP 和 MySQL 在后台处理一些任务,比起多进程的业务逻辑要划算得多。

两种方法我都尝试过,我认为 Cron 非常符合”Keep It Simple, Stupid” (KISS) 的原则,它让后台处理变得简单。与多进程的业务逻辑相比,它没有内存溢出的风险。你可以创建一个简单的批处理脚本,并且在 cron 中运行,这个脚本会定时检查是否有任务需要处理,处理完之后就会自动退出,因此你不用担心是否有进程卡壳,或者陷入死循环。

10. 及时启用错误报告 – David Cummings

David Cummings 有一个专门提供 CMS 软件服务的公司 ,并且获得过几次奖 ,他有非常丰富的 PHP 开发经验。David 曾经写过《two PHP tips he wished he’d learned in the beginning》,其中一点就是:及时启用错误报告,这会节省大量的时间。

我告诉人们,最重要的事情就是最大程度地开启PHP 的错误报告,为什么?因为 PHP 可能会隐藏很多小问题:

变量没有预定义

在代码片段中引用了不可用的变量

使用了未定义的常量这些因素看起来并不是什么大事,除非你在使用面向对象的方法编写一些类库。通常,关闭错误报告将可能使你付出更大的成本来维护你的代码。

错误报告可以帮你轻易地找到代码的问题所在,如果错误报告的等级够高,细微的错误都能被立即发现,帮助你节省整体 debug 的时间。


熟悉语法之类的就不说了,那是基本。好的PHPer我认为应有如下特征:
1.了解HTTP协议和浏览器的运行机制。
2.优雅的代码风格,运用常见设计模式。
3.高访问量数据库设计,高并发需求优化方案。
4.了解PHP底层运行机制,能够编写简单PECL扩展。
5.至少掌握Linux的基本操作和主流Webserver搭建。

首先能自己搭建环境
Linux(Ubuntu/ArchLinux/CentOS), Apache/Nginx, MariaDB/MySQL, Redis/Memcached, MongoDB, PHP-FPM
所以写php的, 连linux都不会, 还是好好加油吧.

前端
除了基本的Html, css, js
接着是框架bootstrap或者foundation
之后是sass
再是grunt/gulp/npm script
再然后是es5, es6/es2015, 感觉最近几年, js在发神经, 既然已经说到了es2015, 像webpack, Tree-shaking, nodejs... 这些东东有兴趣的自己google百度
至于 jquery, 是个好工具, 但已经是老古董了.

前后端可以分离, 但把开发人员也分前后端, 我是觉得没这个必要了.
前后端只是各有侧重, 写个php不会前端, 还是好好加油吧.

数据库
写php的, 觉得写些简单的SQL语句, 如select, update, delete, insert, 是一件非常吃力的事, 那还是好好加油吧.

PHP
关于php要掌握的知识点, 前面的回答有很多. 这里主要要说的是学习的步骤, 就四步
1. 看官网, (最好看英文, 翻译都是二手货), 不用看全, 但要有整体概念, 用的时候能找到相应的资料
2. 代码规范, 极其重要, 好像竟然没人提, 推荐的规范是 psr-2 (PSR-2:Â Coding Style Guide)
3. 掌握一个框架, 建议laravel, symfony
4. 用Google(不是百度), 以下知识点是一些开胃菜, (作为一个合格php开发, 不会用Google, 还是好好加油吧)
- composer
- PHP-FIG — PHP Framework Interop Group 真心是个好东西啊
- GitHub - squizlabs/PHP_CodeSniffer: PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.
- PHPMD - PHP Mess Detector
- PHPUnit – The PHP Testing Framework
- PHP: The Right Way

Git
不废话了, 不会用的还是好好加油吧.

到这里只是刚开始!

如果想做个普通程序员 你大学课程加上大家说的各方面技能 就足够了 你的思考圈子会被上级指定

如果你想出类拔萃 需要:
大局观
好习惯:多思考 少敲键盘 多计划 少debug 多沟通 少修改
尽量从一个项目学很多 不要从很多项目各学一点
多留心:花时间分析你看到的各个项目 增加技术储备 一旦有机会 马上抓住
重点学习:只学用得到的 不要迷恋于技术
社交:紧跟上级 好好表现 他走了也会带你走;和大家搞好关系 有问题找他们帮忙。
锻炼身体
享受生活
服务器:Linux(最好能搭环境,不管是一键安装包或者编译安装,熟悉基本的Linux操作,能写Shell最好了); PHP(这个当然要很熟悉的,包括面向对象,因为现在的框架几乎都是面向对象了,类库,安全模式等); Apache(不要求会写扩展模块,一般的使用和配置参数要熟练掌握,比如伪静态); Mysql(能根据性能要求,配置调优,写高效语句优化数据库,最好会写存储过程); DIV+CSS(不要求达到美工级别的切图,看得懂会改就行,会用Debug准确定位排错); JS(这个一定得会,可以不熟,但是一定要能通过查询手册解决,会用Jquery等库); HTTP(HTTP协议要有所理解,会抓包,会分析请求)还有Ajax,xml等技术
<img data-rawheight="278" data-rawwidth="656" src="https://pic1.zhimg.com/bfc42fe9e713343497f9156ba7f9a730_b.jpg" class="origin_image zh-lightbox-thumb" width="656" data-original="https://pic1.zhimg.com/bfc42fe9e713343497f9156ba7f9a730_r.jpg">来源: 来源: 【分享】给php初学者的建议和学习路线
合格的php需要了解的东西还挺多, 比如mysql、nosql、linux、nginx、前端技术等等,最主要的还是要精通,有很多phper说精通xx,充其量仅仅是了解的程度。
补充一句:要了解PHP擅长做什么,Java体系中的JSP/Servlet/SSH一样可以做这个事情,在什么情况下用PHP,什么情况下不能用,需要对他们有比较深入的了解才能做出判断。
别忘记,PHP 毕竟是解释型的脚本语言。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 作为 PHP 高级工程师,应该具备以下技能: 1. 熟悉 PHP 的语法和标准库,并熟练使用 PHP 的面向对象编程特性。 2. 熟练使用 PHP 的框架,如 Laravel、Symfony、CodeIgniter 等。 3. 熟悉 MySQL 数据库和 SQL 语言,能够编写高效的 SQL 查询语句。 4. 熟悉常用的软件开发流程和方法,如敏捷开发、TDD、BDD 等。 5. 具备良好的软件设计能力,能够根据项目的需求设计出合理的系统架构。 6. 熟悉软件版本控制工具,如 Git。 7. 具备良好的调试能力,能够快速定位和解决问题。 8. 具备良好的文档习惯,能够编写清晰易懂的代码注释和文档。 9. 熟悉 Web 安全,能够保护网站免受常见攻击。 10. 具备良好的沟通能力,能够与团队成员和客户进行有效沟通。 ### 回答2: PHP高级工程师应该具备以下技能: 1. 熟练掌握PHP语言的基础知识和特性,包括语法、数据类型、数组、变量作用域等,能够灵活运用各种语言特性进行开发。 2. 熟悉常用的PHP框架,如Laravel、Symfony等,了解其原理和使用方法,能够利用框架快速搭建高质量的Web应用。 3. 深入理解面向对象编程(OOP)的概念和原则,在代码设计和开发中能够运用OOP思想,编写出可扩展、可维护的代码。 4. 掌握数据库的使用,特别是MySQL,了解SQL语言,能够编写高效的SQL查询语句和优化数据库性能。 5. 熟悉Web前端开发技术,如HTML、CSS、JavaScript等,能够与前端工程师进行良好的合作,实现前后端的数据交互和页面展示。 6. 熟悉常用的开发工具和版本控制系统,如Git,能够高效地进行团队协作和版本管理。 7. 具备良好的问题分析和解决能力,能够快速发现和解决代码中的bug和性能问题,提高应用的稳定性和性能。 8. 关注技术发展动态,主动学习新技术和框架,保持持续学习的态度,提升自己的技术水平。 9. 良好的沟通能力和团队协作能力,能够与产品经理、设计师等其他团队成员紧密合作,共同完成项目。 10. 具备项目管理和团队管理经验者更佳,能够协调分配任务,推动项目进展。 综上所述,PHP高级工程师需要有扎实的PHP基础知识,熟悉常用的开发工具和技术,具备良好的问题解决能力和团队合作能力,并不断学习和积累经验,以适应不断变化的技术环境。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值