关于 PHP 的学习,请教下大神

2015-05-22 11:17:23 +08:00
 Caratpine

第一次在V2EX上发言,如果格式和语气不太对的地方,还请多指教。

我是一个入门的PHPer,在校学生,懂得PHP的基本语法,会一些主流的PHP框架,也拿框架练过一些项目。做的项目里面我发现,我一直都是在CRUD,反思一下,发现自己进步好少,想深入学习PHP,有点茫然了,不知道该学些什么了。之前和朋友交流,他说PHP本身没什么可学的,再往深学就都是些服务端的东西了,请大神们指教一二,我该学些什么东西。

谢谢~

4586 次点击
所在节点    PHP
36 条回复
minishine90
2015-05-22 11:39:47 +08:00
其实PHP更深层的东西以及牵涉的东西还有很多,比如MVC、缓存、处理高并发 各种…楼主只是还没有机会接触到这些!
zzxworld
2015-05-22 11:39:52 +08:00
你该学习做项目了
fangjinmin
2015-05-22 11:42:27 +08:00
我不是大神。
我觉得首先要明白单是语言其实可学很少,更多的使用熟悉程度和编程的技巧。
想要提高,就要脱离语言,看得更远一点。比如说自己去想一个东西或者项目,
去实现它,去解决实际中的问题,这样才能提高。
Caratpine
2015-05-22 11:46:54 +08:00
@minishine90 MVC我大概懂得工作原理,试着看过ThinkPHP的源码,缓存我听过memcache,我感觉这些我现在都用不到啊,能否指点一下进阶的学习道路,谢谢
mcfog
2015-05-22 11:48:09 +08:00
增 如何设计合理的数据结构?
删 硬删除/软删除?灾备?
改 并发冲突?事务?数据迁移?
查 索引?搜索?联表vs分次?复杂查询 vs 额外建表? 缓存?

12306也是增删改查
淘宝京东也是增删改查

没错,写代码不过是增删改查,做寿司不过是饭上放片鱼而已

-----

抄自我自己
mhycy
2015-05-22 11:50:07 +08:00
看你的方向.
===============================================
任何时候语言都不应该是学习的目标,这只是通往某个目标的一个必备的工具而已.
作为在校学生, 你有足够的时间巩固自身的基础知识, 别局限在PHP.
因为这门最好的语言是面向WEB设计的.总会有诸多方面的不足.

找一个方向,并为此进发..
语言?工具而已~

的确你该做个项目深入理解各个模块的功用了~
不是PHP的模块, 是项目上的~
寻找解决方案应对实际的各种需求是程序员的基础能力.

但是, 很遗憾的告诉你, 如果你现在开始做项目, 你就会陷入过早优化的泥坑.
因为经验不足, 你会在代码的各处都进行过早的无意义的优化, 但是好的代码是迭代出来的.
但矛盾的是你需要老老实实的编码, 以寻找出最合理的最合适的编码方式.
建议做些小项目吧.框架\缓存\高并发?没有合适的场景你不可能做出合理的设计的.

一切的后续选择均要看你现在选择未来的方向.好好选择吧~
祝成功~
moro
2015-05-22 11:50:59 +08:00
你需要接触负载量大的业务,然后就有机会解决并发产生的数据一致性问题,性能问题,软件迭代产生的软件架构和硬件架构问题。
mhycy
2015-05-22 11:52:20 +08:00
@moro 深有体会
xlmo
2015-05-22 11:52:54 +08:00
其实很简单。把你做的项目放到不同的场景去(日PV从1到1亿),确保它还能正常运行。
你自己就会知道该学些什么了。
Caratpine
2015-05-22 12:05:16 +08:00
@mhycy 十分感谢,我理解您的意思,我在拉勾上看招PHP研发工程师,发现很多技术我都不懂,我也并不想局限于PHP,我也搞过ACM,数据挖掘,只是现在跳进了PHP这个坑,我想深入学习一下,不想什么都只懂皮毛,我现在在跟老师做一个创业项目,产品还没有上线,所以很多技术我都还没有遇到过啊
Caratpine
2015-05-22 12:07:23 +08:00
@moro 您的意思是我应该找份实习,去体会一下实际开发过程中遇到的问题吗?
mhycy
2015-05-22 12:13:58 +08:00
@Caratpine
要深入就把基础都学牢了.
编译原理/算法到理论/数据结构
搞过ACM的应该不是难事...

其实你现阶段需要把基础学好, 还有知识面的广度.
知识面足够广你自然知道需要学到多深入.
说白了还是与未来目标有关...

其实深入Web开发的第一步就是获得足够广的知识,然后再选一个方向深入.
不然你选了也没法深入~
mhycy
2015-05-22 12:14:35 +08:00
@Caratpine
现在就找实习就太浮躁了...
Caratpine
2015-05-22 12:23:50 +08:00
@mhycy 唔,十分感谢,受教了。
dog999
2015-05-22 12:31:43 +08:00
sampeng
2015-05-22 12:39:02 +08:00
物联网编程,无非就是增删改查。。。
RemRain
2015-05-22 13:01:23 +08:00
往深处学习,是永远学不完的,既然 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 的,即使换一门语言,也能很快上手的人才
whatisnew
2015-05-22 13:13:02 +08:00
@RemRain 别学 session cookie 了,完全没有用,多了解一下 http tcp 协议是正道
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需要反代一个处理程序(因为这货就是代理服务器而已)
服务器可同时实现多请求并发,如何做到请给回答方向.
如果只需要关键字: 多线程 多进程 事件循环...
mhycy
2015-05-22 13:19:53 +08:00
@whatisnew 入门刚好~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/192922

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX