zoukankan      html  css  js  c++  java
  • php源码笔记

    php global

    你global了一个变量,那么Zend就会去全局symbol_table去寻找,如果找不到,就会在全局symbol_table中分配相应的变量。
    通过这样的机制,实现了全局变量。


    单引号与双引号的区别

    至于编译阶段,双引号和单引号的区别也是很大的, 我就举个数字来说明: 在scanning阶段, 对于双引号的词法规则有14条,而对于单引号,仅仅只有6条。

    呵呵,是不是经过这样的分析,你会更清楚的了解到以后该怎么使用单引号和双引号了呢?
    顺便说一句,对于不需要变量替换的纯字符串,大家都知道,因为在C/C++中,双引号才表示字符串,所以这种情况下,还是使用双引号的好。

    参考文章:http://www.laruence.com/2008/08/19/338.html


    使对象可以像数组一样进行foreach循环,要求属性必须是私有

    使用implements Iterator


    错误抑制符

    其实使用@与

    1. $old = error_reporting(0);
    2. include('file');
    3. error_reporting($old);

    参考文章

    http://www.laruence.com/2009/07/27/1020.html


     数组非数字键名引号的必要性

     PHP会把没有引号引起来的键名当作是常量去获取, 当找不到的时候, 抛出一个NOTICE, 然后再根据”常量明”生成一个字符串, 然后再讲这个字符串做为键名继续~

    明白了么? 数组中的非数字键的键名一定要有引号啊~
    哦, 还记得有人会说, 那在字符串变量替换的时候, 写引号会导致错误,
    恩, 标准写法:$string = "variable value is {$array['key']}"


    php受locale影响的函数

    字符串相关:

    strtoupper 转换大写
    strtolower 转换小写
    ucfirst 首字大写
    sprintf 其中一部分格式化有关
    ctype_alpha 检测是否全字母
    ctype_alnum 检测是否全数字
    ctype_cntrl 检测是否全控制字符
    ctype_upper 检测是否全大写
    ctype_lower

    检测是否全小写

    相关文章:http://www.laruence.com/2009/05/31/889.html


     深入理解PHP数组遍历顺序

    加元素的时候, 元素会插在相同Hash元素链的头部和线性列表的尾部. 也就是说, 元素在线性遍历的时候是根据插入的先后顺序来遍历的, 这个特殊的设计使得在PHP中,当使用数字索引时, 元素的先后顺序是由添加的顺序决定的,而不是索引顺序.

    也就是说, PHP中遍历数组的顺序, 是和元素的添加先后相关的, 那么, 现在我们就很清楚的知道, 文章开头的问题的输出是:

    参考文章:http://www.laruence.com/2009/08/23/1065.html


    提升PHP性能之改变Zend引擎分发方式

    可见, GOTO方式最快, SWITCH方式最慢.和官方的描述稍有不符.

    GOTO方式比其默认的CALL方式, 性能提升还是比较明显的.

    所以, 如果你希望让PHP发挥到机制, 改变Zend VM的分发方式, 也可以做为一个考虑因素.

     Zend虚拟机在执行的时候, 对于编译生成的op_array中的每一条opline的opcode都会分发到相应的处理器(zend_vm_def.h定义)执行, 而按照分发的方式不同, 分发过程可以分为CALL, SWITCH, 和GOTO三种类型.

    默认是CALL方式, 也就是所有的opcode处理器都定义为函数, 然后虚拟机调用. 这种方式是传统的方式, 也一般被认为是最稳定的方式.

    SWITCH方式和GOTO方式则和其命名的意义相同, 分别通过switch和goto来分发opcode到对应的处理逻辑(段)


    init_set在安全模式下不能启用


    深入理解ob_flush和flush的区别


     

    http://download.csdn.net/download/heqiang_/9765712      php调试技术手册


    深入理解PHP原理之异常机制

    注意PHP对字符串的递增运算

    深入理解PHP内存管理之谁动了我的内存

  • 相关阅读:
    浅议APC
    fastIO
    设备对象 驱动对象
    PostMessage和SendMessage的区别
    使用DLL在进程间共享数据
    32位程序读写64位程序内存
    windows文件映射
    windows消息传送(自定义消息和WM_COPYDATA)
    windows剪贴板
    mysql innobackupex备份工具
  • 原文地址:https://www.cnblogs.com/yifan72/p/7017905.html
Copyright © 2011-2022 走看看