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

PHP 程序员的正确学习过程。

  •  
  •   chaegumi ·
    chaegumi · 2016-10-12 16:18:22 +08:00 · 3702 次点击
    这是一个创建于 2755 天前的主题,其中的信息可能已经有所发展或是发生改变。
    来了一个转行的 PHP 面试者,自学了 4 个月,通过交流,感觉没学到多少东西,一些需要的技能都不会,线上部署不会, FTP 不会,一些开源系统也没有亲自去用下。所以这边想分享下自己以为正确的观点。

    我以为分 5 步:

    1 、 PHP 的基本语法没得说了,得看一遍基础教程吧,更高级的在使用过程中遇到了再学习。
    2 、本地集成环境的使用,或者也可以一个一个安装,算个学习过程。
    3 、本地安装使用各个开源的程序,每个功能都去用一遍,得学习别人的思路。
    4 、要学会网站程序怎么部署到线上。
    5 、然后就是改程序写程序不断进步了吧。
    24 条回复    2016-10-19 10:28:51 +08:00
    henyi2211
        1
    henyi2211  
       2016-10-12 16:48:06 +08:00
    ...想的再宽点呢

    开源源代码是用来看的呢, 用学不到别人的思路啊, 看别人的源代码, 才有提高的可能呢.
    PHP 的基础看了, 还要掌握 HTML CSS JS 的知识, 这样才算入门
    zhangfanfan
        2
    zhangfanfan  
       2016-10-12 16:52:50 +08:00
    Mac
        3
    Mac  
       2016-10-12 17:10:37 +08:00
    最重要的是编程思想,我当初学编程按照现在的流行语来说,就是冲着全棧攻城狮去的。。。
    thankuu
        4
    thankuu  
       2016-10-12 19:33:16 +08:00

    可以参考这个
    chaegumi
        5
    chaegumi  
    OP
       2016-10-12 21:05:56 +08:00
    @henyi2211

    我是先使用功能,后边才有可能看代码,有的几乎不看代码,代码长什么样我不知道,我只看实现的业务逻辑。
    iamzuoxinyu
        6
    iamzuoxinyu  
       2016-10-12 21:37:02 +08:00
    1. 基础语法基本掌握。包括面向过程部分、面向对象部分以及基本的 lambda 使用。
    2. 本地集成环境,可以独立部署 lnmp/lamp 环境, windows 下使用 xampp 。
    3. 不理解什么才是各个开源程序,使用过 wordpress ,尝试过 magento ,以及零零碎碎的东西。
    4. 会使用 ftp 或 scp 部署到服务器。 git/svn 等没试过。
    5. 独立做过几个小项目。
    请问招实习生么,普通一本 CS 专业。
    scnace
        7
    scnace  
       2016-10-12 22:35:42 +08:00 via Android
    我为什么看到这里 第一反应就是 docker 的能力范围 (还有好想吐槽下 ftp 部署)
    hylent
        8
    hylent  
       2016-10-12 22:46:23 +08:00
    线上部署是用 ftp 么。。
    kideny
        9
    kideny  
       2016-10-12 23:15:49 +08:00
    把 C 学好,永远是 php 的灵魂
    shiji
        10
    shiji  
       2016-10-12 23:27:54 +08:00
    FTP...纯 FTP..是不能更危险的,你传输的文件内容(比如数据库密码,数据库备份),还有 FTP 本身的密码都是明文的。如果碰巧(其实很常见) SSH 密码也是同样的。。额。。。
    visonme
        11
    visonme  
       2016-10-12 23:41:27 +08:00
    我当初学习 php 是这样的
    1. 语法基础+部署+发布 == 必修基本功
    2. 了解请求发起到最后响应结束,整个过程是怎么处理的,其中涉及的哪些环节用到哪些知识点,除应用服务器部分外,针对 PHP 部分找开源深化了解
    3. 学习 /熟练某个 php web 开发框架( 1 个微框架, 1 个大的集成框架)
    4.深入学习 web 开发框架,开始了解 /阅读 PHP 标准 /规范
    5.学习应用服务器知识。了解 /深入性能优化
    onlyhot
        12
    onlyhot  
       2016-10-13 00:04:44 +08:00
    1. 对网站有一个概念,如何运作等等。
    2.对着文档开始写项目。
    for(i = 0 ; i ++ ){
    3.看文档看博客看书看视频
    4.写项目
    }
    shiji
        13
    shiji  
       2016-10-13 01:56:05 +08:00
    好吧,那我来回忆一下我的经历。
    我好像从来就没专门学过 PHP ,初中高中的时候论坛火热,还有类似“论群”一类的公共论坛可以自己注册二级域名。我就想自己搞一个。

    我不喜欢一键安装包之类的东西,所以就走上了一条邪路。在 Windows 机器上配置环境。 当时的情况是什么都不懂, Apache 配置文件, php.ini 都完全不懂。真的是瞎猫碰死耗子,浪费了不少假期的时间让这些组件能正常运行。另外还有别的事情,当时手里有两个路由器,希望两个路由器下面的机器能相互连通(并不想牺牲任何一台路由器的路由功能,所以 LAN-LAN 通过网线连接的方案不考虑)。这个路由器互联的问题荒废了我整个十一长假。上网查资料(百度知道这一类的,回答者都自以为是的告诉我不可行。)后来可能是看到了 CSDN 上的文章,没读懂,看了好几遍,琢磨出来应该用静态路由表实现。然后就那么解决了。

    我在上大二之前是看不懂 HTML 和 CSS 的,直到在学校选了一节网页编程,一个学期, HTML , CSS , JS , PHP , SQL 就都懂了,不懂的也完全知道该去哪里查。在写作业的时候,或者自己写点什么小项目的时候,会遇到很多没见过的问题,这些诡异的问题真是书本上学不到的。

    *** 所以学习网页编程(当然包括 PHP )的第一点是, [多写代码] ***

    多写代码,并不是用你已经完全掌握的知识,去重复创造不同的作品。 (比如:能熟练对数据库查删增改,然后围绕这个写了各种项目,这个就很没营养)
    而是,提出自己想解决的问题,通过自己的编程能力,拆分成一步一步的小步骤,里面可能有你熟悉的,也可能有你陌生的,甚至你并不确信你所学的语言是否真能解决这个问题。去研究,尝试解决的过程,往往是最宝贵的经验。

    继续我的故事,后来我用 Discuz 搞了个论坛,心里(闲的)较着劲儿和别的社团网页比加载速度。在这个过程中接触学习了 web 缓存, mod_pagespeed(这货和 Discuz 极其不友好), CDN , geoDNS 。 论坛得发邮件吧? sendmail , SPF 这些东西也会有所了解。

    后来对安全也比较感兴趣,倒腾 https ,去 SSLLabs 测试提高网站的安全评分,挨个查每一项都具体是啥东西,还接触了 CSP , CORS 。再后来发现 Chrome 的 net-internals 里面有个 HSTS,顺便就谷歌了解了一下它外加 HPKP 。最重要的是这些东西一定要亲自试一试。举例:
    HPKP: https://developer.mozilla.org/en-US/docs/Web/Security/Public_Key_Pinning 我按照这个一步一步做,最后却发现浏览器并不认。。。 看这句话: HPKP has the potential to lock out users for a long time if used incorrectly! The use of backup certificates and/or pinning the CA certificate is recommend. 说的是 recommended ,结果如果只写了一个 pin-sha256 的话,浏览器根本不认。。。这些都是赤裸裸的坑。。。

    *** 所以第二个建议是,保持好奇,多学习多了解多尝试新规则和新技术。万万不要觉得“能用就行”就可以了,要不断探索,不断优化完善。***

    再举个例子, UNIX 文件权限,文件夹的执行权限指的是什么? php 网页程序代码文件需不需要执行权限?粘滞位是啥?这些问题都可以是一个 403 错误引申到的。当然有些人直接把权限改成 777 也能解决问题,说不定还比你提前解决呢。 :)

    电脑相关的东西更新换代很快,如果哪个公司还继续用着 PHP5.2/5.3 ,赶紧跑。 FTP 作为文件下载服务是没什么大问题的,但是用 FTP 传输敏感文件,在注重信息安全的当今是不被接受的。

    至于我的那个论坛,可想而知,在我这么隔三差五的折腾下,默默关了。

    我不想继续写了,都快成小说了。
    msg7086
        14
    msg7086  
       2016-10-13 02:58:42 +08:00
    我成为 PHP 程序员的第一步,也是最重要的一步,是:

    成为一个程序员。

    所以我首先学了 Pascal ,然后学了 C ,最后才开始看 PHP 。

    你首先不是一个程序员,那还谈什么成为 PHP 程序员。
    chaegumi
        15
    chaegumi  
    OP
       2016-10-13 06:24:58 +08:00
    @hylent @shiji

    云主机只是现在才开始盛行的,以前客户购买的主机是不支持管理服务器的,只有 ftp 地址给你上传文件的。
    chaegumi
        16
    chaegumi  
    OP
       2016-10-13 06:26:04 +08:00
    @chaegumi
    即使是现在,还是有大量主机,不支持管理,只有 ftp 。
    R18
        17
    R18  
       2016-10-13 06:31:18 +08:00 via Android
    @chaegumi 没有哪个企业穷到买云主机(空间)
    boter
        18
    boter  
       2016-10-13 06:53:16 +08:00
    @chaegumi 现在才流行?算算阿里云都多少年了,我初中时大家都已经在用 vps 了,猜猜我现在多大了。。
    shiji
        19
    shiji  
       2016-10-13 07:18:22 +08:00 via Android
    @chaegumi 云主机, VPS 什么的盛行了三五年有吧。不能把淘宝卖的那些主机当作行业平均水平啊。
    chaegumi
        20
    chaegumi  
    OP
       2016-10-13 07:51:23 +08:00
    @R18
    @boter
    @shiji

    我是做外贸企业站的, ixwebhosting 的主机就不支持 ssh 管理, godaddy 的也有。前几天还有一个客户提供的一个主机,还只能放一个站的。这种情况还是很多的。
    Jakesoft
        21
    Jakesoft  
       2016-10-13 08:11:19 +08:00 via iPhone
    首先从我这里买一个草鸡便宜的 vps 起步吧
    scnace
        22
    scnace  
       2016-10-13 08:33:46 +08:00 via Android
    @chaegumi 那个并不叫主机吧 叫空间吧(互联网很久以前的产物吧,小学的时候看叔叔玩过)。。之前帮人搞过 阿狸云也有提供的 不支持 ssh 只能 ftp 太坑了,我就建议他去买台 ECS 了…不要贪什么小便宜 。。
    falcon05
        23
    falcon05  
       2016-10-13 09:11:29 +08:00 via iPhone
    我只说以前四个字: LAMP , PHP 是一种非常实在的语言,面向的目标就是 web 开发,对 web 开发,语言是一部分,环境是另一部分。 LAM 是最基础的环境,但每一个都需要投入相当的精力。
    HowToMakeLove
        24
    HowToMakeLove  
       2016-10-19 10:28:51 +08:00
    主机 和虚拟主机 不一回事吧, FTP 应该只有虚拟主机时用到的,因为他只是一个目录。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3006 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 14:22 · PVG 22:22 · LAX 07:22 · JFK 10:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.