V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
evax
V2EX  ›  PHP

PHP 学习困惑

  •  
  •   evax · 2016-05-18 23:07:26 +08:00 · 6425 次点击
    这是一个创建于 3113 天前的主题,其中的信息可能已经有所发展或是发生改变。

    以前学了些基础,很零星。这学期从三月份开始一直持续学习 php 到现在。前不久用 thinkphp 做了个小的项目,前端界面和功能基本实现了,后台代码大概八九百行吧。但是却越做越没动力了,再看看我写的代码,基本都是简单的 curd ,没有一点技术含量。然后我看了看 onethink 的源码,和一些开源的内容管理系统,基本看不懂。学到现在,我都不知道我能做什么项目,真的不知道该如何继续学习 php 。。。(马山要找实习:亚历山大啊)!

    77 条回复    2016-06-10 17:49:22 +08:00
    bdbai
        1
    bdbai  
       2016-05-18 23:17:48 +08:00 via Android
    把你认为重复的 curd 进行抽象,压缩冗余代码量,顺便造个轮子出来,然后就能长进不少。
    evax
        2
    evax  
    OP
       2016-05-18 23:22:29 +08:00
    @bdbai 话虽这么说,但是抽象这个东西,没那么简单。压缩冗余代码:写的时候我已经注意过这个问题了,继续压缩的空间不大。
    bdbai
        3
    bdbai  
       2016-05-18 23:35:04 +08:00 via Android   ❤️ 1
    @evax 那么还有 NoSQL 、缓存、消息队列、横向扩展、容器化以及各种中间件...
    evax
        4
    evax  
    OP
       2016-05-18 23:43:17 +08:00 via Android
    @bdbai 这些概念,不知道该如何下手,我自己做的一些小项目,不知道该如何去应用这些技术。不过你说的这些,我会去了解的。
    GhostEX
        5
    GhostEX  
       2016-05-18 23:49:54 +08:00
    做的小项目不如贴出来看看。
    evax
        6
    evax  
    OP
       2016-05-18 23:54:01 +08:00 via Android   ❤️ 1
    @GhostEX http://www.thinkphp.cn/code/2007.html 这是我昨天贴上的,上面有些介绍。
    bdbai
        7
    bdbai  
       2016-05-19 00:11:27 +08:00 via Android
    @bdbai 了解以后都可以派上用场的,比如:在数据访问层前面加上缓存,用消息队列来给用户发邮件,把整个应用制作成 Docker 镜像等等。如果能想办法 hold 住高并发就更好了。
    evax
        8
    evax  
    OP
       2016-05-19 00:14:43 +08:00 via Android   ❤️ 1
    @bdbai 我会尝试去应用一下,顺便学习一下新的东西
    msg7086
        9
    msg7086  
       2016-05-19 00:16:37 +08:00
    用 ab 做压测看性能,然后试着提高它。(缓存? Nginx 上黑科技优化?)
    提示消息都是中文的,试着做成多语言版本?

    我看了你的代码,其实写得还是挺不错的。再接再厉。
    vacker
        10
    vacker  
       2016-05-19 01:29:09 +08:00
    同为新手,正在熟悉 laravel ,可以多交流下 ,企鹅 86056380
    ICU
        11
    ICU  
       2016-05-19 09:03:39 +08:00
    比我当时强多了,找到实习,然后在工作中去学习了!!
    mapleth
        12
    mapleth  
       2016-05-19 09:07:16 +08:00   ❤️ 1
    做的还不错啊
    krivol
        13
    krivol  
       2016-05-19 09:26:53 +08:00 via Android
    不错
    somnus
        14
    somnus  
       2016-05-19 09:43:23 +08:00
    很腻害了,还用上了 onething/..
    PHP 的话会增删改查差不多了,
    evax
        15
    evax  
    OP
       2016-05-19 09:43:24 +08:00
    @msg7086 谢谢鼓励,我觉得我是有点浮躁了。我还会坚持的。
    evax
        16
    evax  
    OP
       2016-05-19 09:45:44 +08:00
    @somnus 总是重复的 curd ,感觉真的没什么用。还要学的真的太多了
    evax
        17
    evax  
    OP
       2016-05-19 09:47:19 +08:00
    @ICU 我也是这么想的,不过总的有点东西才敢实习啊。不可能一问三不知,别人还要你。
    ICU
        18
    ICU  
       2016-05-19 10:06:20 +08:00
    @evax 实习吗,别人也不会要求太高,况且,你有自己做的东西,多去面试面试,就知道差在哪里了,还要掌握什么,所以,要立马行动
    narrowei
        19
    narrowei  
       2016-05-19 10:06:24 +08:00
    @evax 实习前掌握 crud 其实就足够了。你的项目还可以加个 sphinx 练练手顺带熟悉下 linux 环境。
    kobe1941
        20
    kobe1941  
       2016-05-19 10:32:17 +08:00
    慢慢来,刚开始的时候,学习曲线是比较陡峭的,过几个月就好了,加油!
    evax
        21
    evax  
    OP
       2016-05-19 10:34:33 +08:00
    @ICU 没有面试过,不知道差什么。所以现在感觉什么都想学,什么都没学够。如果现在只满足于实习的水平而不深入,就没什么意思了。
    evax
        22
    evax  
    OP
       2016-05-19 10:35:12 +08:00
    @kobe1941 的确是入门简单,精通难啊。有点浮躁了
    dearmadman
        23
    dearmadman  
       2016-05-19 10:35:50 +08:00
    @evax 你可以参考我写的这篇: http://www.jianshu.com/p/ceec037d0641
    如果实在无聊的话 建议刷几遍 php.net
    推荐你读下这本书《 Modern PHP 》
    evax
        24
    evax  
    OP
       2016-05-19 10:35:52 +08:00
    @narrowei 我会试试的。再做点其他的小项目再练练
    evax
        25
    evax  
    OP
       2016-05-19 10:40:39 +08:00
    @dearmadman 感谢你的建议。我会参考的。
    alexsunxl
        26
    alexsunxl  
       2016-05-19 10:55:11 +08:00   ❤️ 1
    @evax
    除了上面大家说这些闭门造车造轮子,硬生生熬过迷惘期,我还有另外一个建议,你可以参考一下
    去参加一些顶级的技术大会,看看最牛逼的人在干什么,关注什么东西,业界有什么新趋势。还有聆听他们分享的经验和业务抽象。总之就是绝对值回门票和机票

    比如我自己,身为一个前端, 就从深圳飞去北京参加了 第二届 php 国际大会。 我们家的 php 后端都没去(我觉得很可惜,错过不是一般的多)
    我是会不惜一切抓住能提升自己的机会。
    当然业界会有很多大会,也有很多质量差的,我的最主要考量就是看演讲嘉宾。 第二届 php 国际大会邀请到了 php 创始人 Rasmus ,还有 php 第一网红鸟哥,还有几个档次非常高的大神。就冲着他们去,想象他们不会让人失望。
    alexsunxl
        27
    alexsunxl  
       2016-05-19 10:56:11 +08:00
    上面最后的”想象”打错了, 是相信
    evax
        28
    evax  
    OP
       2016-05-19 11:04:10 +08:00
    @alexsunxl 现阶段我接触这方面的机会不大,毕竟水平和能力都还太弱,而且还在校。等以后工作了,我会很有兴趣参加类似的活动的!
    evax
        29
    evax  
    OP
       2016-05-19 11:08:44 +08:00
    @alexsunxl 我想请问一下,现在做 php 开发,用框架多呢还是原生 php 多。我一直很困惑,到底我是花时间学框架,还是花时间了解 php 基础。
    likezun
        30
    likezun  
       2016-05-19 11:14:45 +08:00   ❤️ 1
    学习 symfony 框架吧 ,可以开拓你的视野, 难度大, 收益巨大!
    evax
        31
    evax  
    OP
       2016-05-19 11:16:46 +08:00
    @likezun 但是目前国内不是 tp 用的挺多的么。而且我现在需要快速熟悉一个框架,先找到实习。
    alexsunxl
        32
    alexsunxl  
       2016-05-19 11:28:56 +08:00   ❤️ 2
    @evax
    https://www.zhihu.com/question/46236752/answer/100767894?from=profile_answer_card
    知识能力论,能解决你这个问题, 20%是知识, 80 %是能力,你可以先看一下我知乎的回答,道理是相同。
    你记了很多框架 api ,原生 phpAPI , 但这些仅仅是知识。
    比如你对原生 phpAPI 和 tp 的 api 记得很熟。然后去你 a 公司面试, a 公司业务用 yii , 你的 tp api 对他们没有意义,只有原生 api 稍微有意义, 这时候你的知识分就会减分,但如果你有能力(能力权重是 80 ),就完全可以把分数拉高了。

    所以原生和框架并不重要,重要的是提高能力,然后偶尔兼顾一下知识。

    问题来了,怎么提高能力,我这里先给个入门版的。
    那就是 不挑框架,深入去做一个复杂项目(涉及队列和异步,比如说完成发邮件,发短信的模块,处理到某个时间点会自动改变状态的数据-->常见的是倒计时商品)
    当你完成这些复杂度,你的能力自然就上来了,当你能力上来之后,就无所谓这框架,那框架了,不就是背背 api ,看看源码,写写 hello world 就能熟悉吗
    nigelvon
        33
    nigelvon  
       2016-05-19 11:29:59 +08:00 via Android
    不建议深入学 thinkphp ,楼主在哪个城市
    evax
        34
    evax  
    OP
       2016-05-19 11:59:17 +08:00 via Android
    @nigelvon 打算在成都找工作。
    changwei
        35
    changwei  
       2016-05-19 12:26:28 +08:00
    @bdbai 有空你分享一下你的学习路线呀!
    likezun
        36
    likezun  
       2016-05-19 12:26:39 +08:00   ❤️ 2
    @evax 我就不会 tp , 我推荐 yaf PHALCON zf2 Laravel sf2 YII 哪个都行, 唯独不推荐 tp . 这和找工作没关系。
    以下引用:
    TP 最大的优点兼缺点,是灵活(多快好省?大跃进?率性而为?说白了就是不规范),怎么方便怎么来,力求快速上手,直奔小康,一夜建成社会主义。
    当其他框架发誓要让 PHP 程序规范起来的时候, TP 把这种不规范发挥到了新的高度。风骚的 C D F M I 方法,让人心醉。
    TP 能在中国流行,根本原因是 TP 公司的商业模式很成功,跟培训机构合作.第二,中文文档全,国内程序员英文能力都不怎么的(大部分是大专本科生).第三,营销模式很成功,社区拉拢新手,洗脑的好。
    changwei
        37
    changwei  
       2016-05-19 12:29:08 +08:00
    CURD 是工具,只会 CURD 就像富士康的工人只会操作流水线上的机器一样没什么区别。
    在写代码的过程中学会发现问题解决问题。发现的问题有可能是架构模块的划分,代码的解耦等等,然后进阶到学习设计模式,学习写出高效的,可维护的,高内聚低耦合的代码,我觉得这些东西要比看几个手册学几个 CMS 背几个 API 要更加有用。
    changwei
        38
    changwei  
       2016-05-19 12:32:15 +08:00
    @likezun TP 已经推出了 5.0 了,已经没有单字母全局函数了,而且也有人说 CDFMI 之类的方法简洁,认为这种简洁就是优点。
    vacker
        39
    vacker  
       2016-05-19 13:41:06 +08:00
    我也是新手,希望和更多的 php 学习者交流,前面发了企鹅加楼主,没想到有几个 V2EX 的加我,为了方便所以就建了个企鹅群 154283168 有兴趣的就加吧,希望各位大神多多指导。
    yuyu233
        40
    yuyu233  
       2016-05-19 15:00:06 +08:00
    Ouyangan
        41
    Ouyangan  
       2016-05-19 15:27:59 +08:00
    很不错啊, 继续加油
    evax
        42
    evax  
    OP
       2016-05-19 15:29:50 +08:00
    @yuyu233 已看,很有指导意义。我现在应该是处于第二阶段吧。路还长啊
    evax
        43
    evax  
    OP
       2016-05-19 15:45:46 +08:00
    @changwei 我就是越写越觉得实在重复工作,每个方法都是 curd ,让后读结果,渲染模板,太机械了。所以之前做的项目暂时搁浅了,再深入学习点再继续做。
    agui2200
        44
    agui2200  
       2016-05-19 16:20:13 +08:00
    首先,楼上说的 XX 框架,不太建议以框架为入门,框架一般都有自己的属性,不一定适合你,也包含了一些错误 /优秀的实践,
    楼主学习阶段,最好还是以原生代码为主,同时学编码规范为辅,学到基本的(原生)CURD 能写的很溜,去看框架,学用 IDE,
    agui2200
        45
    agui2200  
       2016-05-19 16:22:25 +08:00
    补楼上,原生学的好,看个框架源码问题都不大了,就去 github 上面溜源码,各种设计模式都看看.这个时候对框架有个概念了,就基本算是"可以做事"的状态了.这个时候可以考虑模拟一些小业务去做,
    关于编码规范:
    推荐<PHP 之道>
    可以阅读的书也很多,不要买国内培训机构出版的图书就可以了.
    下面我觉得你也应该会怎么往下学习了
    Balthild
        46
    Balthild  
       2016-05-19 16:24:14 +08:00 via iPhone
    @likezun 单字母方法,我的解决方式是套一层全局函数上去
    evax
        47
    evax  
    OP
       2016-05-19 16:33:39 +08:00
    @agui2200 现在开始补 php 原生语法,之前学的基础都是网上看的,东一点西一点。有答主推荐了 php 和 mysql web 开发,我现在正在看。倒是发现了许多之前没注意过的细节。框架的话,目前我还是用 tp 吧,当前目标还是找工作啊。。。
    wensonsmith
        48
    wensonsmith  
       2016-05-19 16:38:39 +08:00
    PHP 语法和这些框架都是高层的东西, 你要想学下去,要去了解 自动加载,命名空间,魔术方法

    http://laravel-china.github.io/php-the-right-way/ 这个是 php 之道,你从头到尾过一遍

    然后自己练手写个矿建
    http://www.zhihu.com/question/26635323/answer/33812516

    看看这两个连接里面有多少是自己的不会的,一个一个的学
    evax
        49
    evax  
    OP
       2016-05-19 16:46:55 +08:00
    @wensonsmith 谢谢指导。我会花使用这两个链接的。
    AbrahamGreyson
        50
    AbrahamGreyson  
       2016-05-19 17:12:16 +08:00   ❤️ 1
    自己抱怨“枯燥没技术含量”,别人给你推荐 symfony 你还不愿意。
    其实试用下别的东西和你自己的工作并不矛盾,业余或者下班时间就看 symfony 去吧,组件都会用了, php 和 oop 也学差不多了。另外就是 php.net ,一遍遍读文档,不读个 10 来遍写代码会卡壳,除非你过目不忘。

    另外,我十分不赞同, “ XXX 不适合上手” 这种说辞,什么叫上手? 你自己理解不了就回去补编程基础,老是拉低别人做什么呢。我没觉得 tp 比其它任何东西“更容易上手”。 那么问题来了, 你是愿意用一个让你变成代码猴子的工具, 还是一个真正能提升你技术水平的。
    GhostEX
        51
    GhostEX  
       2016-05-19 17:20:53 +08:00
    @AbrahamGreyson 为什么最推荐 symfony ?

    如果是以容易找工作为导向, yii 、 tp 会不会是更好的选择
    xuwenmang
        52
    xuwenmang  
       2016-05-19 17:25:31 +08:00
    先搞 Java/C# 再回到 PHP ,会有一种从太空看地球的感觉。一切都清爽了。
    evax
        53
    evax  
    OP
       2016-05-19 17:32:19 +08:00
    @xuwenmang php 地球都没学会,如何去到太空。。。
    evax
        54
    evax  
    OP
       2016-05-19 17:39:44 +08:00
    @GhostEX 我现在是以找工作为当前目标。 tp3 还是 tp5 ,希望指点。
    tttimit
        55
    tttimit  
       2016-05-19 18:03:23 +08:00
    看看我翻译的这篇文章 http://v2ex.com/t/278300#reply0
    Light3
        56
    Light3  
       2016-05-19 18:16:16 +08:00
    楼上吐槽框架的真是够了。感觉你写的比我好多了页面 - - symfony2 你可以等到你 2 年经验的时候开始看 会提升很大。会发现和之前的那些东西完全不一样。 TP 有 TP 的好 我司现在就用的 你说哪个 TP 版本 现在一般用 TP3.2 的多一点 5 还是测试没人用 少听瞎扯 多自己看看东西 比如鸟的博客
    snriud
        57
    snriud  
       2016-05-19 18:33:04 +08:00
    你的经历竟然同我如此类似。我也是今年三月份开始辞职(原汽车行业苦逼产品工程师)学习,看完手册上的常用扩展之后也是从 thinkphp 这个框架入手学习的。打算先做一个功能比较完善的博客系统。有时也会迷茫,也不明白自己离能够上手工作还差多远...
    evax
        58
    evax  
    OP
       2016-05-19 18:38:37 +08:00
    @Light3 现在打算开始做另一个项目。但是不知道该如何选择 tp 版本。希望给点建议
    evax
        59
    evax  
    OP
       2016-05-19 18:44:30 +08:00
    @snriud 我之前做的那个小项目就是打算做博客系统的,虽然只做了前台页面和功能。我们可以交流。我 q : 674310383
    bdbai
        60
    bdbai  
       2016-05-19 18:46:28 +08:00 via Android
    @changwei 各种杂,都没有深究...也分享一下你的呗
    evax
        61
    evax  
    OP
       2016-05-19 18:53:15 +08:00
    再次感谢楼上各位 v 友的意见和建议。从你们的回答中,我得到了很多学习方法和学习资料,我相信会对我有很大帮助。我目前的打算:先用 tp ,因为我想在这个暑假投实习。所以想熟练这个框架。等有了一定基础后,我会学习其他更强大的框架。而且我也没打算一直用 tp 。 laravel and symfony2 都是更强大的框架。鉴于自己的特点,暂时等稳定了再学习。
    Light3
        62
    Light3  
       2016-05-19 18:57:02 +08:00
    @evax 看你实习阿 TP 用多了也就那样 会 CURD 就好了。。 没准你去那个公司就是低头写接口。。闲事可以多看看各种博客 多接触一点 服务器基础 JS CSS3 Html5 这些对你找实习有帮助
    cjyang1128
        63
    cjyang1128  
       2016-05-19 18:57:56 +08:00
    可以看下 php 源码,深入理解 php 的运行机制,这方面可以从研究 php7 的优化上入手。或者熟悉一下其他的 PHP 框架,看里面的源码,了解各个框架的原理是啥。 php 的话肯定是 web 开发,也可以再深入学习一下 HTTP 协议,甚至是网络层的协议。数据库那块也有一大坨东西。对你的项目而言,你有写单元测试吗,你有试过压力测试吗( Jmeter ),你知道怎么去优化你的代码上的性能问题吗,你是否尝试过用设计模式去优化过你的代码结构,你的 sql 是否优化过(索引,批量),或者你的网站有安全上的漏洞吗( XSS , sql injection )骚年你做的东西很棒,我衷心的建议是在现阶段好好夯实基础,其他复杂的东西了解就行了,静下心来,看好你~祝你找到一个不错的实习~
    evax
        64
    evax  
    OP
       2016-05-19 19:20:56 +08:00
    @cjyang1128 感谢你的建议。我现在也在补基础了。我想的还是一边学习基础,一边做点练手的小项目。
    evax
        65
    evax  
    OP
       2016-05-19 19:21:48 +08:00
    @Light3 好的。我会多多学习的。
    wannianma
        66
    wannianma  
       2016-05-20 09:28:21 +08:00
    推荐看这本书《深入 PHP 面向对象、模式与实践》,也许能解答一部分你现在的疑惑
    changwei
        67
    changwei  
       2016-05-20 09:47:16 +08:00
    @wannianma 这本书我买过,这本书偏理论研究,而不是实际运用(甚至有个章节是介绍如何自己设计一个“设计模式”),我觉得这本书更适合已经做了一两年开发然后网上又简单的了解过设计模式的人去看的。
    changwei
        68
    changwei  
       2016-05-20 09:48:51 +08:00
    @evax 所以说这种工作缺乏创造性,你现在应该是想做一些有创造性的工作而不是重复的工作,可以考虑往 PM 方向转啊,没事多了解了解自己在做的项目,或者和 PM 多聊聊,网上多学学。甚至自己创业。
    changwei
        69
    changwei  
       2016-05-20 09:49:16 +08:00
    @bdbai 现在贴吧你不怎么玩了啊?
    Patrick95
        70
    Patrick95  
       2016-05-20 11:04:52 +08:00   ❤️ 1
    楼主我跟你的情况大致差不多 可以交个朋友抱团取暖吗。
    evax
        71
    evax  
    OP
       2016-05-20 13:02:04 +08:00
    @Patrick95 可以啊,正想找几个一起学习的人。可以 q 我,上面有我号。
    evax
        72
    evax  
    OP
       2016-05-20 13:02:43 +08:00
    @evax 我去,你就是加我那个,,,,,
    jswh
        73
    jswh  
       2016-05-20 13:14:32 +08:00
    都是 curd ?先自己写个 orm 喽
    evax
        74
    evax  
    OP
       2016-05-20 13:46:33 +08:00
    @jswh 不是吧,我还没理解到那么深
    bdbai
        75
    bdbai  
       2016-05-20 18:22:03 +08:00 via Android
    @changwei 对,只逛 V2 了
    wannianma
        76
    wannianma  
       2016-05-23 08:46:32 +08:00 via iPhone
    @changwei 其实里面的讲的很多模式挺实用,结合框架源码一起看,会有不错的效果。
    evax
        77
    evax  
    OP
       2016-06-10 17:49:22 +08:00
    fsdafasd
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1260 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 18:11 · PVG 02:11 · LAX 10:11 · JFK 13:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.