PHP是一个Web脚本语言,在Web应用中最常见的莫过于列表显示。所以页码生成也就犹为常用。 最近我索性写了一个,在生成思想上, 有一些技巧拿与大家分享
Comments closedPHP5.3 α2 已经放出1个多月了, 最近一直都忙一些私人的事情, 今天终于有点时间.
赶紧下来试用, apache2.x + php5.3 alpha2
changes:
- Namespaces (documentation maybe out dated)
- Late static binding and __callStatic
- Lambda functions and closures
- Addition of the intl, phar (phar is scheduled for some more work a head of alpha2), fileinfo and sqlite3 extensions
- Optional cyclic garbage collection
- Optional support for the MySQLnd replacement driver for libmysql
- Windows older than Windows 2000 (Windows 98, NT4, etc.) are not supported anymore (details)
- New syntax features like NOWDOC, limited GOTO, ternary short cut "?:"
在前面的文章中我已经介绍了PHP的变量的内部表示(深入理解PHP原理之变量(Variables inside PHP)),以及PHP中作用域的实现机制(深入理解PHP原理之变量作用域(Scope inside PHP))。这节我们就接着前面的文章,继续介绍PHP中变量分离和引用的概念:
with 76 Comments最近做的一个项目是基于PHP4的, 习惯了PHP5的面对对象,面对PHP4,难免会有很多不爽:
不支持public, static, private, protected关键字, 最郁闷的是,不支持析构函数:
本文就将借助PHP的register_shutdown_function来在PHP4中模拟类的析构函数
我前面的文章介绍了PHP变量的内部表示,但是,问题是,这些内部表示是如何和用户脚本中的变量联系起来的呢?也就是说,如果我在脚本中写下:
<?php $var = "laruence"; echo $var; ?>
ZE是如何把我的变量var和内部结构zval联系起来的呢?
with 19 Comments今天guoxiaod提出了一个问题,如下:
<?php
class a extends b {
};
class b extends c{
};
class c{
};
?>
会导致fatal error:
PHP Fatal error: Class 'b' not found in /home/xinchen/1.php on line 2 Fatal error: Class 'b' not found in /home/xinchen/1.php on line 2
分析这个问题,是运行阶段出错,经过分析PHP的编译,执行过程,得出如下的parsing顺序...
with 13 Comments闲来无事,就系统的从PHP的词法分析,语法分析,opcodes生成,执行,整个流程,详细的分析了global关键字的实现。
with 14 Comments或许你知道,或许你不知道,PHP是一个弱类型,动态的脚本语言。所谓弱类型,就是说PHP并不严格验证变量类型(严格来讲,PHP是一个中强类型语言,这部分内容会在以后的文章中叙述),在申明一个变量的时候,并不需要显示指明它保存的数据的类型。而PHP的核心ZE是用C编写的,大家都知道C是一个强类型语言,也就是说,在C中所有的变量在它被声明到最终销毁,都只能保存一种类型的数据。 那么PHP是如何在ZE的基础上实现弱类型的呢?且听我慢慢道来....
with 45 Comments