PHP/Zend
文章平均质量分 67
盘古大叔
这个作者很懒,什么都没留下…
展开
-
spl_autoload_register 实现类的自动加载
include.php<?php$include = array('test');set_include_path(get_include_path() . PATH_SEPARATOR .implode(PATH_SEPARATOR, $include));class Loader{ /** * 自动加载类 * @param $class 类名原创 2013-10-16 15:07:29 · 665 阅读 · 0 评论 -
【PHP内核】运算符:instanceof的内核实现
PHP中有个类型运算符instanceof 用于确定一个 PHP 变量是否属于某一类 class原创 2016-04-07 20:39:30 · 2202 阅读 · 0 评论 -
【PHP笔记】 zend常用数据结构及宏
1、zend_execute_data:opcode执行期间非常重要的一个结构,记录着当前执行的zend_op、返回值、所属函数/对象指针、符号表等//Zend/zend_compile.hstruct _zend_execute_data { const zend_op *opline; /* executed opline原创 2016-03-13 16:15:44 · 1598 阅读 · 0 评论 -
PHP7哈希表(数组)的内核实现
PHP7+内部哈希表,即PHP强大array结构的内核实现。哈希表是PHP内部非常重要的数据结构,除了PHP用户空间的Array,内核也随处用到,比如function、class的索引、符号表等等都用到了哈希表。关于哈希结构PHP7+与PHP5+的区别可以翻下[nikic]早些时候写的一篇文章,这里不作讨论。原创 2016-12-01 12:06:52 · 5788 阅读 · 1 评论 -
PHP函数执行超时控制扩展(for php7+)
函数级控制PHP函数的执行时间,超时终止执行,支持毫秒级配置,在call_user_func()基础上加了超时控制机制。源码:https://github.com/pangudashu/timeout版本v1.0.0环境&依赖OS: linuxVersion: PHP 7.0.0及以上SAPI: php-fpm or cli特性通用:函数级控原创 2016-11-28 16:35:18 · 2343 阅读 · 1 评论 -
【PHP7内核剖析】3.3 Zend引擎执行过程
更多《PHP7内核剖析》系列文章:https://github.com/pangudashu/php7-internal3.3 Zend引擎执行过程Zend引擎主要包含两个核心部分:编译、执行:前面分析了Zend的编译过程以及PHP用户函数的实现,接下来分析下Zend引擎的执行过程。3.3.1 数据结构执行流程中有几个重要的数据结构,先看下这几个结构。原创 2017-03-31 09:44:32 · 9055 阅读 · 4 评论 -
【PHP7内核剖析】面向对象-类的实现及编译
更多《PHP7内核剖析》系列文章:https://github.com/pangudashu/php7-internal目录:3.4.1.1 类的结构及存储3.4.1.2 类常量3.4.1.3 成员属性3.4.1.4 成员方法3.4.1.5 类的编译3.4.1 类类是现实世界或思维世界中的实体在计算机中的反映,它将某些具有关联关系的数据以及这些数据上的操作封装在一起。在面向对象中类是对象的抽象,对象原创 2017-03-31 09:49:42 · 5979 阅读 · 0 评论 -
【PHP内核】语法:不同类型之间数值运算的实现
我们都知道php属于弱类型的语言,不同类型之间可以直接进行运算,比如加减乘除,但是php是构建在c语言之上的,它是如何实现这种复合类型运算的呢?很显然,内核帮我们作了类型转化,下面我们就从一个简单的例子具体看下zend引擎中都干了哪些事。(文中涉及的代码均来自php-7.0.4)原创 2016-03-23 14:41:17 · 2142 阅读 · 1 评论 -
【PHP内核】语法:IF判断的实现
面试PHP时经常碰到一种判断各种类型的空值是否为true的题:$a = '';$a = null$a = false;if($a){...}if(isset($a)){...}if(empty($a)){...}...由下面的例子我们来简单看下zend引擎中对if是怎么处理的:<?php$a = ''; //array();if($a){ echo "Y";}这里例子比较简单原创 2016-04-01 16:14:27 · 2050 阅读 · 0 评论 -
MessagePack介绍
1,今天在hacknews上看到很多人对messagepack的争论。首先了解什么是MessagePack:MessagePack is a binary-based efficient object serialization library. It enables to exchange structured objects between many languages like JSON. ...转载 2015-10-13 09:50:05 · 4848 阅读 · 0 评论 -
使用$this实现独特的调用方式
使用过thinkphp都知道其curd的连贯操作方式:$model->where($map)->limit()->select();这么调用是不是很酷^_^其实where、limit、select是类中普通的方法,不同的是中间的那些加了一个return $this这种方式常用的场景是通过方法设置参数或者处理(不需要返回值) <?phpclass example {原创 2013-10-16 15:17:43 · 811 阅读 · 0 评论 -
smarty与js、css定界符冲突解决方法
smarty的默认定界符是{ },在使用中js、css可能与之冲突,因为smarty引擎把js中{ }之间的内容也当做smarty语句来处理解决方法:1.更改smarty定界符,{%%}。(麻烦,而且习惯了使用{})2.使用{literal} {/literal}包含js、css,这样告诉smarty引擎中间代码非smarty语句3.将{}换行隔开,如 img{bor原创 2013-10-16 17:02:02 · 1342 阅读 · 0 评论 -
php保留小数
number_format(2/3,1);原创 2013-11-26 11:24:37 · 607 阅读 · 0 评论 -
PHP代码优化技巧
1.如果一个方法能被静态,那就声明他为静态的,速度可提高1/4;2.echo的效率高于print,因为echo没有返回值,print返回一个整型;3.在循环之前设置循环的最大次数,而非在在循环中;4.销毁变量去释放内存,特别是大的数组;5.避免使用像__get, __set, __autoload等魔术方法;6.requiere_once()比较耗资源;7.在inclu转载 2013-12-03 10:43:34 · 986 阅读 · 0 评论 -
php反射api
官方文档:http://www.php.net/manual/en/reflectionclass.getmethod.php反射简单的理解就是根据实例化的对象查看类的信息,通过对象反射类 <?phpclass test{ public function index() { return "dd"; }}$test = new test();原创 2014-01-15 17:10:56 · 761 阅读 · 0 评论 -
jsonp实现跨域读写cookie
关于jsonp的介绍、json与jsonp的区别可以看一下这篇文章http://www.cnblogs.com/dowinning/archive/2012/04/19/json-jsonp-jquery.html javascript是无法跨域读写cookie的,如果想在其他域写cookie一般可以隐藏一个iframe去访问这个域,让它来写入,jsonp提供给我们一个更好的选择,可以通过原创 2014-02-11 15:46:21 · 15722 阅读 · 0 评论 -
PHP posix_getpid 取得当前服务器进程号
<?phpecho posix_getpid(); //8805?>注:此函数只有在linux下有效原创 2014-02-27 09:55:56 · 3851 阅读 · 0 评论 -
php字符串查找函数zend_memnstr
Zend/zend_operators.h:static inline char * zend_memnstr(char *haystack, char *needle, int needle_len, char *end){ 字符首指针 char *p = haystack; 最后一个字符 char ne = needle[needle_le原创 2015-07-02 10:55:44 · 1509 阅读 · 0 评论 -
【PHP7内核剖析】3.4 面向对象-对象的实现
更多《PHP7内核剖析》系列文章:https://github.com/pangudashu/php7-internal3.4.2 对象对象是类的实例,PHP中要创建一个类的实例,必须使用 new 关键字。类应在被实例化之前定义(某些情况下则必须这样,比如3.4.1最后那几个例子)。3.4.2.1 对象的数据结构对象的数据结构非常简单:typedef struct _zend_object原创 2017-04-12 09:48:13 · 1363 阅读 · 0 评论