完全没搞过PHP,只是这么多年偶尔会在某些书籍文章论坛看见别人贴的代码,具体并未深入. 但是本人基础绝对是扎实足够的 (20年以上代码编程经验,其中超过十年数据库和网站开发经验,所以跟Web相关的通用技术,如缓存\算法\HTML\JS\CSS\包括HTTP模型TCP实现这些都绝不会是问题...)我问的是关于"纯"PHP的问题, 我觉得语法也应该没什么问题...但是我想节约时间,请各位熟悉的人给推荐些比较经典的介绍PHP的网站或者书籍,电子版也好. 中英文不限. 主要是PHP执行机理,内部运行时核心问题, 一些需要注意的细节问题常见问题和高级技巧之类的.希望各位有点什么好的书籍介绍,或者好的经验.
有一支PHP的队伍可能近期会落我手里需要我带一下....我本人是不搞PHP的也没打算搞...但是完全不了解这项技术又似乎说不过去,我大概不会参与代码,但是如果有什么比较底层点的核心问题我估计我跑不掉....囧...所以想短期突击一下...如果有那种PHP跟其他Web技术整天对比的书最好了....
谢谢!

解决方案 »

  1.   

    容易的很,你下个discuz的程序看一下就会做一个网站了。真的。
      

  2.   

    php手册,或到php.net网站看,也可以看开源程序
      

  3.   


    天啊,你没一两年的PHP经验就去带队
    如果你会其他语言还可以。
    (PS:我接单的大部分网站的代码都是菜得不能再菜的代码,不过都能够运行~)
      

  4.   


    不好意思,lz,我看到了300分太激动了,所以赶紧抢了沙发了。
    你有20年的经验,那应该不需要多少时间的,不过我仔细想了下,如果你真的要想了解你说的想要的,还是看看discuz 或者dedecms 的代码,应该不用多长时间久可以完全熟练的。
      

  5.   

    十天学会php 那个小教程一会儿就看完了,就可以写简单东西了
    看discuz代码有点过分看死人了
      

  6.   

    给点建议仅供参考:
    无论其它方面如何,不应跳过php基础直接接触核心,还是建议迅速掌握基础语法,想节省时间的话最好边看遍做,做个实际的程序出来,可以边参考别人写好的程序边做。完了之后,再看看现有的比较成熟的大型模板,然后再看一遍php手册,了解一下php运行机制。
    整个过程就是这样,想走捷径,就怕囫囵吞枣,不知深浅。
      

  7.   

    下几个流行框架看看源码,立一个项目直接开发,比如cms、bbs等,参考一下discuz,ecshop,phpMyAdmin,多看看php语法手册。
      

  8.   

    1. 我赞同三楼的答案, 其它的比较勉强, 从楼主的经验来说是S级别了, 以我之见, 目前中国市场内没有一本书(包括PHP圣经)能满足楼主的胃口, 及所谈到的“PHP执行机理,内部运行时核心问题”,  解决这问题的关键是, 你必须直接看PHP没编译的C源码和弄明白PHP解释器, 如何先解释脚本, 再怎么执行脚本, 而这些资料的提供者最权威的只有官方网(www.php.net)。2. 如果你明白C的原理, 基本就懂了PHP底层原理, PHP只是用C写WEB的一种方式, 在上个世纪那些前辈开始用C写WEB的时代, 发现很累赘, 所以发明了PHP, 从而降低了C写WEB的门槛, 提高了开发效率。3. 谈到PHP是弱类型的一种, 它的变量可以随便存放int,float,bool,string类型, 我猜它就是C的共同体,换句话说PHP就是用C写WEB的一个框架
    后面两点都是强调红色字部份, 至于语法直接看中国版的w3c school基本不是问题, 个别函数应用和PHP会话,安全机制之类看官方手册, 还有linux,mysql,apache相关的知识你也跑不掉。如果楼主弄明白了粗体字部份一定要多点和我交流, 因为这个问题也是我在PHP中的一个坎 - -!
      

  9.   

    另外补充一下, PHP的框架只是为了提高开发效率, 但没必能帮楼主弄明白PHP核心问题, 低层原理。 也就是说看PHP项目的源码没达到你想要效果, 只能看C源码。
      

  10.   

    回复16楼,你的回答非常有意义."PHP只是用C写WEB的一种方式, 在上个世纪那些前辈开始用C写WEB的时代, 发现很累赘, 所以发明了PHP"
    对于这些正是我希望知道的,我就需要的是关于 系统到底做了什么事情,比如 echo 的时候到底是那些C语句.... 看 解释器 的源码,这应该是个不错的主意.  但是PHP到现在也很多年了, 没有什么专门讲解这些的书籍么? 现在我所知道的是PHP的所谓"高效率"并不是一句语句执行多块,而是远比ASP.NET和JSP这些重量级东西短得多的执行路径. 也就是平均一句代码对应的低级语句少得多. 但是怎么个少法之类的,确实如你说的, 看解释器源码肯定能看出来. 恩,  当然如果有专门介绍的书先感性认识后再看会好得多,起码省时间多. 你说的 "PHP圣经" 我不知道这本书,不过敢起这样名字的, 应该有些料,我先找来看看再说.
    最后:解释器是开源的 ?   PHP 对应的C (PHP没编译的C源码) 是一个中间产物吗???类似 C#对应的IL ,Java对应的 bytecode ? ok,谢谢, 我明白了, 16楼给100分,剩下的200分等明天没其他人的更有价值的回答的话,200分就平均分给顶的人好了, 谢谢各位~~
      

  11.   


    楼上青蛙讲得很好,鼓掌...先说书吧,还真没什么好书讲这个的
    手册上这部分(zend core就是php的核心代码)很不完整:
    http://www.php.net/manual/en/internals2.php
    (这就是所谓的php手册,你也能看到其他语法,扩展的文档)php就是由zend core及扩展模块组成的,我们这些写代码的平时就是主要用扩展里的函数/对象等,这些你不写代码不用多研究,反正你手下会有高级程序员的解释器是开源的,绝大部分扩展也是开源的,
    php是c直接解释运行,没有中间代码,如果安装了apc,会有缓存的opcode,我觉得和bytecode也不太一样吧既然你是做过C#和java的,框架里肯定是zend framework最对你胃口,其它的框架不用考虑了...楼上说的discuz什么的千万别看,看了你就反对用php了...:)运行上,php是作为apache的一个模块,就是说如果apache碰到一个php文件,就调用php模块解释该文件后运行输出,
    就是说php没有jre那样的运行环境,仅作为apache的一个线程运行, 
    一个后果是每个php文件运行是都是重新创建所有需要的对象/资源/变量,并在该文件执行结束后全部销毁.(听起来很恐怖?)最后,再做广告,欢迎加入我们的google group, 我们需要你这样的高级人才:)
    btw,楼上的青蛙也在我们group里==========================================================
    欢迎加入以google wave为交流工具的PHP讨论组: [email protected] 
    加入办法: 
    1。 从你的gmail可以直接发信到 [email protected] 
    2。 PM你的邮箱给我,我直接加入 
    3。 到http://groups.google.com/group/phpwave/subscribe?note=1申请 
      如果该网址不能访问请尝试 https://groups.google.com/group/phpwave/subscribe?note=1 
          或 http://groups.google.co.uk/group/phpwave/subscribe?note=1 ...(或换其它国家域名) 
      

  12.   

    to 18F如果你想深入一点, 建议你到linux平台上研究php, 上面有很多php的资源, 包括我提到的一些没编译php源码, linux平台较多人搞php扩展(国外), 都是自己写了, 编译运行, 和发布的。至于书籍,我说的圣经都是相对于入门级来说,有实践经验的程序员,可直接看手册就OK。 php出道那么多年, 当然会有较权威的书籍, 但在国内基本上找不到。 因为php也是国内近这几年才兴起, 书籍也是新引进不久(在一两年前,国内的大学甚至找不到有开php的课程,老师也少, 老鸟们基本是自学)。这资源可能对你有用(http://lxr.php.net/)
      

  13.   

    楼主这种层次的应该尝试搭个MVC框架先 其中穿插着学习下php
      

  14.   

    早上看了一个上午, 果然那个"圣经"是个入门书...囧...又简单翻了下Zend的源码. 以下是一点点不成熟的看法,如果有犯什么低级错误,请大家斧正.
    PHP其实就是一个拥有类ASP的结合方式, 使用C语法的, 去除了部分语法特性的Python. 
    代码风格种类太灵活(多种嵌入html的语法和太多种功能一样的注释方式,包括很多简单运算如逻辑运算都有多种等价写法. echo什么的也有多种完全等价写法,相同功能多种写法对于写个人程序来说是个方便,但是对大队伍开发很不利哦, 大约跟PHP的 Personal Home Page的原始定位有关)不利于大团队中对他人代码的阅读(实际执行中需要建立强制性的规范文档来保证可读性?)如果要面向对象则每个类使用一个文件又会造成每个子类都一直 require父类,会否造成服务器在 I/O 上面的负担? 如果所有类合并一个文件里,则在以后require 或者include 这个文件的时候多执行了很多不必要的包含. 没有办法对父类的内容进行语法上的隐藏(让子类无法调用),比如父类和子类由不同的人维护,比如父类是由管框架公共代码的人维护,而子类是二次开发的人维护, 父类的程序员需要对自己写的类进行重构的过程中, 一些只给自己使用的函数,也许只是暂时的,过段时间这些代码就可以删除了(有更合理和完整的实现), 但是他无法知道子类要是使用了这些代码....那问题就可能非常严重了...while($i < 100000)
    {
    echo $i++ ;
    }
    对于这样的语句块, echo语句是被解释了 10万次??? 还是如 IL 般只在第一次时执行, 而在循环第2次时直接使用第一次的 本地码 ?看见库里有对dBase这种古老东西的支持,勾起十几年前的回忆...现在该极少需要这种东西吧?何况其实以ODBC操作dBase应该也是没问题的,何须保留这种对古老技术的专门支持.看来使用广泛也有缺点啊, 就是重构时包袱太大了. 跟 Mac 平台Cocoa里的字符串一样....可以使用Perl的样式比对,这是个好东西.  正则表达式的支持略显单薄,但是普通应用足够.
    我简单跟踪了一下源码, 在源码的Zend文件夹里面的zend_language_parser.c 应该是个比较值得研究的东西, 5000多行代码,主要用于把php代码变成C语言代码.这里可以在语法层面看见很多新东西,时间关系还没看完,先继续看着, 下午晚些时候再来结贴并对这个东西做个简单的观后感吧,呵呵. 
      

  15.   

    期待LZ把底层代码的研究心得写出来。
    我等后辈甘之如饴。php的执行步骤基本有4步
    1.Scanning(代码分解成无数个token,词法分析)
    2.Parsing(合并token成表达式) 
    3.Compilation(将表达式翻译成opcode)
    4.Execution(执行opcode)
      

  16.   

    ~~ 不过虽然如此,不过大部分HR在招聘的时候竟然说你是不是学PHP专业的 ,~ 无话可说了。
      

  17.   

    php 就如其名 Personal Home Page 这就是它的局限性