第一次在V2EX上发言,如果格式和语气不太对的地方,还请多指教。
我是一个入门的PHPer,在校学生,懂得PHP的基本语法,会一些主流的PHP框架,也拿框架练过一些项目。做的项目里面我发现,我一直都是在CRUD,反思一下,发现自己进步好少,想深入学习PHP,有点茫然了,不知道该学些什么了。之前和朋友交流,他说PHP本身没什么可学的,再往深学就都是些服务端的东西了,请大神们指教一二,我该学些什么东西。
谢谢~
1
minishine90 2015-05-22 11:39:47 +08:00
其实PHP更深层的东西以及牵涉的东西还有很多,比如MVC、缓存、处理高并发 各种…楼主只是还没有机会接触到这些!
|
2
zzxworld 2015-05-22 11:39:52 +08:00
你该学习做项目了
|
3
fangjinmin 2015-05-22 11:42:27 +08:00
我不是大神。
我觉得首先要明白单是语言其实可学很少,更多的使用熟悉程度和编程的技巧。 想要提高,就要脱离语言,看得更远一点。比如说自己去想一个东西或者项目, 去实现它,去解决实际中的问题,这样才能提高。 |
4
Caratpine OP @minishine90 MVC我大概懂得工作原理,试着看过ThinkPHP的源码,缓存我听过memcache,我感觉这些我现在都用不到啊,能否指点一下进阶的学习道路,谢谢
|
5
mcfog 2015-05-22 11:48:09 +08:00
增 如何设计合理的数据结构?
删 硬删除/软删除?灾备? 改 并发冲突?事务?数据迁移? 查 索引?搜索?联表vs分次?复杂查询 vs 额外建表? 缓存? 12306也是增删改查 淘宝京东也是增删改查 没错,写代码不过是增删改查,做寿司不过是饭上放片鱼而已 ----- 抄自我自己 |
6
mhycy 2015-05-22 11:50:07 +08:00
看你的方向.
=============================================== 任何时候语言都不应该是学习的目标,这只是通往某个目标的一个必备的工具而已. 作为在校学生, 你有足够的时间巩固自身的基础知识, 别局限在PHP. 因为这门最好的语言是面向WEB设计的.总会有诸多方面的不足. 找一个方向,并为此进发.. 语言?工具而已~ 的确你该做个项目深入理解各个模块的功用了~ 不是PHP的模块, 是项目上的~ 寻找解决方案应对实际的各种需求是程序员的基础能力. 但是, 很遗憾的告诉你, 如果你现在开始做项目, 你就会陷入过早优化的泥坑. 因为经验不足, 你会在代码的各处都进行过早的无意义的优化, 但是好的代码是迭代出来的. 但矛盾的是你需要老老实实的编码, 以寻找出最合理的最合适的编码方式. 建议做些小项目吧.框架\缓存\高并发?没有合适的场景你不可能做出合理的设计的. 一切的后续选择均要看你现在选择未来的方向.好好选择吧~ 祝成功~ |
7
moro 2015-05-22 11:50:59 +08:00 1
你需要接触负载量大的业务,然后就有机会解决并发产生的数据一致性问题,性能问题,软件迭代产生的软件架构和硬件架构问题。
|
9
xlmo 2015-05-22 11:52:54 +08:00
其实很简单。把你做的项目放到不同的场景去(日PV从1到1亿),确保它还能正常运行。
你自己就会知道该学些什么了。 |
10
Caratpine OP @mhycy 十分感谢,我理解您的意思,我在拉勾上看招PHP研发工程师,发现很多技术我都不懂,我也并不想局限于PHP,我也搞过ACM,数据挖掘,只是现在跳进了PHP这个坑,我想深入学习一下,不想什么都只懂皮毛,我现在在跟老师做一个创业项目,产品还没有上线,所以很多技术我都还没有遇到过啊
|
12
mhycy 2015-05-22 12:13:58 +08:00 1
@Caratpine
要深入就把基础都学牢了. 编译原理/算法到理论/数据结构 搞过ACM的应该不是难事... 其实你现阶段需要把基础学好, 还有知识面的广度. 知识面足够广你自然知道需要学到多深入. 说白了还是与未来目标有关... 其实深入Web开发的第一步就是获得足够广的知识,然后再选一个方向深入. 不然你选了也没法深入~ |
15
dog999 2015-05-22 12:31:43 +08:00
|
16
sampeng 2015-05-22 12:39:02 +08:00
物联网编程,无非就是增删改查。。。
|
17
RemRain 2015-05-22 13:01:23 +08:00 3
往深处学习,是永远学不完的,既然 LZ 感到茫然,我就说下自己在面试中,比较爱问的几个问题:
1. PHP 的数组作 Map 用时,给定一个 key,能很快找到 value,在遍历 Map 的时候,还能保证顺序不变,如何才能实现这样一个 Map。(注:Java HashMap、Perl 哈希是无序的) 2. 如何才能实现 PHP 的弱类型? 3. Cookie 与 Session 的区别?有了解过 PHP Session 的存储方式吗?多台服务器如何保证 Session 一致? 4. 你用的是 Apache 还是 Nginx?Apache/Nginx 和 PHP 有什么关系?是 Apache/Nginx 执行的 PHP 脚本吗?服务器能同时处理多个 PHP 请求吗(如何做到的)? 这几个问题只要能答对一个,那说明面试者是有钻研精神,真正了解过 PHP 的,即使换一门语言,也能很快上手的人才 |
19
mhycy 2015-05-22 13:19:31 +08:00
@RemRain
尝试回答: 第一问: 底层C实现的时候创建两个动态数组(动态数组本身的实现不在此题目范围内) 一个是Key数组, 一个是Value数组, 二者存放的都是数据指针. 同时写入/修改二者 查询的时候遍历Key数组,记录偏移, 获取Key所在的的位置, 那么Key所在的位置就是Value的位置 自然遍历的时候只要按顺序取出就行了 第二问: 用结构体来记录指针,类型. 如果需要转换的话调取相应的转换函数进行处理.. 具体情况具体分析 第三问: Cookie是把数据记录在客户端, Session是给客户端一个Session索引, 数据存放在服务器. 索引的维护由PHP底层进行处理. 一般配置是存放成文件, 当然也可以有其他选择 多台服务器保持Session一致需要有一个同步机制或者一个集中储存机制. 最简单的做法就是把Session设定为一个远程端文件夹,可通过NAS方式挂载. 第四问: 无论是啥,都是一个服务器程序而已... 其中Apache直接调取PHP的扩展库进行请求处理. Nginx需要反代一个处理程序(因为这货就是代理服务器而已) 服务器可同时实现多请求并发,如何做到请给回答方向. 如果只需要关键字: 多线程 多进程 事件循环... |
21
moro 2015-05-22 13:39:21 +08:00
其实你只要看看你下一阶段目标的要求,你就知道你最应该学什么。
比如你现在是学生,下一阶段应该是实习生,或者初级工程师,你就看看网上这些职位的招聘要求,汇总一下,或者你可以多看几阶,这样就可以快速跳级。 |
22
kemikemian 2015-05-22 13:58:22 +08:00
燕十八的什么高级学习,你搜索一下吧,那里面php要学习的知识都在里面,提高很有好处
|
23
mrgump 2015-05-22 14:03:39 +08:00
实战练习,解决一个个实际的问题,不断寻找更大的挑战,要不学那么多理论没用。
|
24
lshero 2015-05-22 14:47:28 +08:00
工作两三年的文科生PHP码农表示 别看拉钩那些要求很多都是复制粘贴的。就因为是胶水语言给那么点薪水还想让PHPer把DBA、运维、前端的活全包了。
真要到了编码工作分工都是很明确的能把Manual的东西搞明白了工作起来就有思路了,见过很多号称资深PHPer手册速查都不会,只能拼命不断的使用关键词百度或者Google 现在公司企业里面见到的也就是MVC的框架下面用命名空间组织一下代码,Composer源不是很稳定估计国内用的公司也不是很多,有些更过分的甚至还在用着老掉牙的PHP5.2兼容的MVC框架 至于缓存、数据库表分区、全文搜索还有队列之类的假设出来的场景没有任何实际意义,当你遇到实际情况的时候才会发现增删改查到底难在哪里。如同你给一个访问量不大特别注重前端的以展示为主的网站把ORM设计成了读写分离的,最后才发现除了增加系统维护的难度之外没有任何帮助,有那功夫还不如考虑把CSS/JS合并了并加上版本号呢。 找工作呢一般都会考你一点点小算法了,像我这种文科生呢当别人一问我链表什么的100%就跪了,所以感觉我所在的企业都不是最优选择。 |
25
g8287694 2015-05-22 15:01:02 +08:00
和LZ一样
不知道怎么深入 都说高PV处理之类的 但关键是 自己学习 遇不到这种情况啊 |
26
blue7wings 2015-05-22 16:48:10 +08:00
同楼主情况,我还是觉得多写多看多思考,一千个人可能给你一千个不同的指导方案,仅仅看和学是不够的,需要在实践中发现自身的问题,然后去补足它。一起加油。。。
|
27
MrEggNoodle 2015-05-22 16:56:54 +08:00
我是Py方向的,不过,曾经我也是你这种状态,后来,我改成了,自己找项目做,学学SAE怎么搭PHP,然后自己找个方向做项目。在做的过程中你就会知道你要学什么了。理论看太多,没有实践都是空的,编程虽说是脑力活,但是更是一种匠活,说多无益,听多会忘会迷惘,所以请动手哈!
|
28
Actrace 2015-05-22 17:01:08 +08:00 1
php的核心目标是快速解决问题,因此你完全没必要学什么底层,那些口口声声说要学底层的(所谓的深入)估计也没几个真正能达到那么深的层次。
作为一个合格的phper,你需要及时了解这门快速更新的编程语言的新特性,并能大概知晓其运用场景(是的,你不需要精通所有的特性,因为这不可能)在需要的时候及时切入进来。因为这些新特性固然会有其作用场景,但是切勿滥用,不要为了用而用。 我觉得jquery的设计理念同样适合phper: write less ,do more. 如果是为了探寻程序原理和更伟大的目标,那么请老老实实学好汇编和C。 |
30
kyyych 2015-05-22 20:43:38 +08:00
研究开源框架, 维护别人的项目
|
31
susanDao 2015-05-23 08:08:15 +08:00 via iPhone
找个地方实习吧
|
32
hellovigoss 2015-05-23 22:46:10 +08:00
从来没有觉得一个称职的phper仅仅只是一个phper
|
33
mingyun 2015-05-24 09:53:23 +08:00
赶紧先上手项目吧
|
34
miaotaizi 2015-05-26 23:46:11 +08:00 1
刚想提问跟楼主一样的问题,就看到这个帖子了.
我觉得我比楼主更糟... 年纪快上30 了才学了PHP 作为编程入门, 想好好的学一下编程却不知道从何下手, 现在都感觉没信心了. 楼主加油, 你还年轻! |
35
maiziedu 2015-05-29 16:47:41 +08:00
根据题主的描述,题主也是一个有一定PHP经验的人,学php的话,应该就更轻松,现在题主学的东西都比较杂且不深入,建议题主针对性的系统学习,推荐php开发实战教程: http://www.maiziedu.com/course/14/ 这个教程是课程模块化了的教程,分了基础阶段、进阶、高级阶段等,每个阶段要学的课程也有列出了
|