关于 PHP 的学习,请教下大神 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Caratpine
V2EX    PHP

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

  •  
  •   Caratpine 2015-05-22 11:17:23 +08:00 5195 次点击
    这是一个创建于 3801 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    谢谢~

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

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

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

    -----

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

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

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

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

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

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

    其实深入Web开发的第一步就是获得足够广的知识,然后再选一个方向深入.
    不然你选了也没法深入~
    mhycy
        13
    mhycy  
       2015-05-22 12:14:35 +08:00
    @Caratpine
    现在就找实习就太浮躁了...
    Caratpine
        14
    Caratpine  
    OP
       2015-05-22 12:23:50 +08:00
    @mhycy 唔,十分感谢,受教了。
    dog999
        15
    dog999  
       2015-05-22 12:31:43 +08:00
    sampeng
        16
    sampeng  
       2015-05-22 12:39:02 +08:00
    物联网编程,无非就是增删改查。。。
    RemRain
        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 的,即使换一门语言,也能很快上手的人才
    whatisnew
        18
    whatisnew  
       2015-05-22 13:13:02 +08:00
    @RemRain 别学 session cookie 了,完全没有用,多了解一下 http tcp 协议是正道
    mhycy
        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需要反代一个处理程序(因为这货就是代理服务器而已)
    服务器可同时实现多请求并发,如何做到请给回答方向.
    如果只需要关键字: 多线程 多进程 事件循环...
    mhycy
        20
    mhycy  
       2015-05-22 13:19:53 +08:00
    @whatisnew 入门刚好~
    moro
        21
    moro  
       2015-05-22 13:39:21 +08:00
    其实你只要看看你下一阶段目标的要求,你就知道你最应该学什么。
    比如你现在是学生,下一阶段应该是实习生,或者初级工程师,你就看看网上这些职位的招聘要求,汇总一下,或者你可以多看几阶,这样就可以快速跳级。
    kemikemian
        22
    kemikemian  
       2015-05-22 13:58:22 +08:00
    燕十八的什么高级学习,你搜索一下吧,那里面php要学习的知识都在里面,提高很有好处
    mrgump
        23
    mrgump  
       2015-05-22 14:03:39 +08:00
    实战练习,解决一个个实际的问题,不断寻找更大的挑战,要不学那么多理论没用。
    lshero
        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%就跪了,所以感觉我所在的企业都不是最优选择。
    g8287694
        25
    g8287694  
       2015-05-22 15:01:02 +08:00
    和LZ一样
    不知道怎么深入 都说高PV处理之类的 但关键是 自己学习 遇不到这种情况啊
    blue7wings
        26
    blue7wings  
       2015-05-22 16:48:10 +08:00
    同楼主情况,我还是觉得多写多看多思考,一千个人可能给你一千个不同的指导方案,仅仅看和学是不够的,需要在实践中发现自身的问题,然后去补足它。一起加油。。。
    MrEggNoodle
        27
    MrEggNoodle  
       2015-05-22 16:56:54 +08:00
    我是Py方向的,不过,曾经我也是你这种状态,后来,我改成了,自己找项目做,学学SAE怎么搭PHP,然后自己找个方向做项目。在做的过程中你就会知道你要学什么了。理论看太多,没有实践都是空的,编程虽说是脑力活,但是更是一种匠活,说多无益,听多会忘会迷惘,所以请动手哈!
    Actrace
        28
    Actrace  
       2015-05-22 17:01:08 +08:00   1
    php的核心目标是快速解决问题,因此你完全没必要学什么底层,那些口口声声说要学底层的(所谓的深入)估计也没几个真正能达到那么深的层次。
    作为一个合格的phper,你需要及时了解这门快速更新的编程语言的新特性,并能大概知晓其运用场景(是的,你不需要精通所有的特性,因为这不可能)在需要的时候及时切入进来。因为这些新特性固然会有其作用场景,但是切勿滥用,不要为了用而用。
    我觉得jquery的设计理念同样适合phper: write less ,do more.

    如果是为了探寻程序原理和更伟大的目标,那么请老老实实学好汇编和C。
    mhycy
        29
    mhycy  
       2015-05-22 17:04:46 +08:00
    @Actrace 支持...
    工具终归是工具,用得溜才是正道...
    kyyych
        30
    kyyych  
       2015-05-22 20:43:38 +08:00
    研究开源框架, 维护别人的项目
    susanDao
        31
    susanDao  
       2015-05-23 08:08:15 +08:00 via iPhone
    找个地方实习吧
    hellovigoss
        32
    hellovigoss  
       2015-05-23 22:46:10 +08:00
    从来没有觉得一个称职的phper仅仅只是一个phper
    mingyun
        33
    mingyun  
       2015-05-24 09:53:23 +08:00
    赶紧先上手项目吧
    miaotaizi
        34
    miaotaizi  
       2015-05-26 23:46:11 +08:00   1
    刚想提问跟楼主一样的问题,就看到这个帖子了.
    我觉得我比楼主更糟...
    年纪快上30 了才学了PHP 作为编程入门, 想好好的学一下编程却不知道从何下手, 现在都感觉没信心了.
    楼主加油, 你还年轻!
    maiziedu
        35
    maiziedu  
       2015-05-29 16:47:41 +08:00
    根据题主的描述,题主也是一个有一定PHP经验的人,学php的话,应该就更轻松,现在题主学的东西都比较杂且不深入,建议题主针对性的系统学习,推荐php开发实战教程: http://www.maiziedu.com/course/14/ 这个教程是课程模块化了的教程,分了基础阶段、进阶、高级阶段等,每个阶段要学的课程也有列出了
    Caratpine
        36
    Caratpine  
    OP
       2015-05-29 23:50:32 +08:00
    @miaotaizi 一起加油~ 可以一起交流学习
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2625 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 14:26 PVG 22:26 LAX 07:26 JFK 10:26
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86