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
错误抑制符
其实使用@与
- $old = error_reporting(0);
- include('file');
- 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内存管理之谁动了我的内存
php源码笔记的更多相关文章
- Zepto源码笔记(一)
最近在研究Zepto的源码,这是第一篇分析,欢迎大家继续关注,第一次写源码笔记,希望大家多指点指点,第一篇文章由于首次分析原因不会有太多干货,希望后面的文章能成为各位大大心目中的干货. Zepto是一 ...
- redis源码笔记(一) —— 从redis的启动到command的分发
本作品采用知识共享署名 4.0 国际许可协议进行许可.转载联系作者并保留声明头部与原文链接https://luzeshu.com/blog/redis1 本博客同步在http://www.cnblog ...
- AsyncTask源码笔记
AsyncTask源码笔记 AsyncTask在注释中建议只用来做短时间的异步操作,也就是只有几秒的操作:如果是长时间的操作,建议还是使用java.util.concurrent包中的工具类,例如Ex ...
- Java Arrays 源码 笔记
Arrays.java是Java中用来操作数组的类.使用这个工具类可以减少平常很多的工作量.了解其实现,可以避免一些错误的用法. 它提供的操作包括: 排序 sort 查找 binarySearch() ...
- Tomcat8源码笔记(八)明白Tomcat怎么部署webapps下项目
以前没想过这么个问题:Tomcat怎么处理webapps下项目,并且我访问浏览器ip: port/项目名/请求路径,以SSM为例,Tomcat怎么就能将请求找到项目呢,项目还是个文件夹类型的? Tom ...
- Tomcat8源码笔记(七)组件启动Server Service Engine Host启动
一.Tomcat启动的入口 Tomcat初始化简单流程前面博客介绍了一遍,组件除了StandardHost都有博客,欢迎大家指文中错误.Tomcat启动类是Bootstrap,而启动容器启动入口位于 ...
- Tomcat8源码笔记(六)连接器Connector分析
根据 Tomcat8源码笔记(五)组件Container分析 前文分析,StandardService的初始化重心由 StandardEngine转移到了Connector的初始化,本篇记录下Conn ...
- Tomcat8源码笔记(五)组件Container分析
Tomcat8源码笔记(四)Server和Service初始化 介绍过Tomcat中Service的初始化 最先初始化就是Container,而Container初始化过程是咋样的? 说到Contai ...
- Tomcat8源码笔记(四)Server和Service初始化
上一章 简单说明下Tomcat各个组件: Server:服务器,Tomcat服务器,一个Tomcat只有一个Server组件; Service:业务层,是Server下最大的子容器,一个Server可 ...
- Tomcat8源码笔记(三)Catalina加载过程
之前介绍过 Catalina加载过程是Bootstrap的load调用的 Tomcat8源码笔记(二)Bootstrap启动 按照Catalina的load过程,大致如下: 接下来一步步分析加载过程 ...
随机推荐
- Hexo NexT 博客与Github page 关联指南
上篇文章 Hexo 博客框架NexT主题搭建指南 我们已经在本地搭建好了Hexo博客框架NexT 主题的博客程序,但是这感觉还是远远不够. 我们还想把它部署到我们的Github上,让其他人可以看到我们 ...
- 【Big Data - Hadoop - MapReduce】初学Hadoop之图解MapReduce与WordCount示例分析
Hadoop的框架最核心的设计就是:HDFS和MapReduce.HDFS为海量的数据提供了存储,MapReduce则为海量的数据提供了计算. HDFS是Google File System(GFS) ...
- c++11 输出时间
C++11中输出当前时间最直接的方法: std::time_t t2 = std::time(nullptr); cout << std::put_time(std::localtime( ...
- ECMAScript 6 入门之Proxy代理和set
1.Proxy代理 1. var user={ full_name:function () { return this.fname+" "+this.lname; } }; use ...
- iOS 版本更新(强制更新)检测问题
iOS 版本更新(强制更新)检测问题 通常iOS系统中是默认设置再wifi状态,且网络状况良好下自己更新应用的. 但是如果用户设置了不自动更新,但是我们的APP出现重要的版本,一定需要用户更新的情况下 ...
- Jacky扯淡系列 – 验证码
1 验证码的用途 防止恶意用户的csrf,比如一些bot的重复请求,类似的有密码破解等操作. 但是验证码这个东西会降低用户的体验度,因此不能将其作为必备的防护措施. 2 常见的验证码形式 通常的验证码 ...
- Java知多少(101)图像缓冲技术
当图像信息量较大,采用以上直接显示的方法,可能前面一部分显示后,显示后面一部分时,由于后面一部分还未从文件读出,使显示呈斑驳现象.为了提高显示效果,许多应用程序都采用图像缓冲技术,即先把图像完整装入内 ...
- 【转】xhEditor技术手册 网页编辑器基础教程
1. xhEditor入门基础 1.1. 在线可视化HTML编辑器概述1.2. 获取xhEditor1.3. xhEditor运行环境1.4. xhEditor基本使用指南 1.1. 在线可视化HTM ...
- PLSQL存储过程(基础篇)-转
我不是专门的开发人员,但存储过程又是很重要的知识,为了能够很好的记忆,现把这些基础知识总结一下.存储过程可以实现代码的充分共享,提高系统性能. 基础篇 知识回顾 如果经常使用特定操作,哪么 ...
- jdk和tomcat基本配置
问题:前端采用grunt构建,后台采用java编写使用Eclipse或IntelliJ,把Tomcat嵌入到开发工具当中.问题一:在于是grunt编译之后生成的文件,每次都需要刷新项目文件夹,然后在刷 ...