Press "Enter" to skip to content

PHP5多层继承顺序的bug

今天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顺序...

Filed in Linux/Unix, PHP应用, PHP源码分析
with 13 Comments

深入理解PHP原理之变量(Variables inside PHP)

或许你知道,或许你不知道,PHP是一个弱类型,动态的脚本语言。所谓弱类型,就是说PHP并不严格验证变量类型(严格来讲,PHP是一个中强类型语言,这部分内容会在以后的文章中叙述),在申明一个变量的时候,并不需要显示指明它保存的数据的类型。而PHP的核心ZE是用C编写的,大家都知道C是一个强类型语言,也就是说,在C中所有的变量在它被声明到最终销毁,都只能保存一种类型的数据。 那么PHP是如何在ZE的基础上实现弱类型的呢?且听我慢慢道来....

Filed in PHP应用, PHP源码分析
with 45 Comments

用Tidy优化你的HTML(Optimizing HTML with Tidy)

最近试用了很多的编辑器, 都有一个共同的缺点, 就是如果直接输入HTML,并且HTML格式错误, 有没有闭合的标签,就有可能导致最终的页面乱掉。 想了几个办法效果都不太好, 呵呵,tidy来了! 手册介绍:

  Tidy is a binding for the Tidy HTML clean and repair utility which allows you to not only clean and otherwise manipulate HTML documents, but also traverse the document tree.
    

Filed in PHP应用
with 4 Comments

PHP的老式语法

因为我的blog使用的wordpress,所以不可避免的看了看wp的源码,发现了一些很老式的语法,呵呵,难到wp的工程师都是老phper了?
if...endif:

if(con):
  expr;
elseif(con):
  expr;
else:
  expr;
endif;

while ... endwhile;

while (con):
   ...
endwhile;

还有就是最近遇到了以前遇到过的一个问题, 就是如果自定义的404错误页面大小过小(512字节), IE会认为是不友好的错误页面,从而使用内建的自己的错误页面代替,唉,自作聪明的IE;

Filed in 随笔
with 8 Comments

扩展PHP[Extending PHP](一)

这篇文章将会系统的介绍如何开发自己的PHP扩展, 也许你会说,网上这样的文章已经很多了,为什么还要写? 呵呵,我当然不会只是简单的重复。 这篇文章将会涉及到很多的高级技术,比如在自己的扩展中使用资源,开发一个类给脚本使用,在PHP中使用C++的对象等等,另外这篇文章还会穿插很多Zend引擎和PHP内核的知识,比如变量的实现,资源的实现,PHP4和PHP5对类的不同实现等等

Filed in PHP应用, PHP源码分析
with 24 Comments

PHP Life Cycle演讲幻灯片(PHP Life Cycle Slides)

作为一个PHPer,你知道你的代码最终是怎么样被执行的么?
你知道从一个请求的发起,到最后的得到结果,经过了那些步骤么?
你知道Zend虚拟机是什么么?
你知道PHP是怎么和Apache整合的么?
呵呵,我来解答:
这是我上次给同事们做演讲的时候的PPT, 具体演讲内容等我回头整理了再放上来。
点击查看 PHP Life Cycle

Filed in PHP应用, PHP源码分析
with 28 Comments

PHP 源代码分析 V0.0.2

做为我以后乱写的一个指导方针。呵呵
PHP 源代码分析目录
1. 第一章 构建系统 准备工具、库及需要具备的基础知识;
2. 如何编译不同平台的版本?编译时的各个选项是什么含义?
3. 如何创建一个 PHP 扩展/模块?如何创建一个 Zend 扩展?
4. 如何调试 PHP?如何调试 PHP/Zend 扩展?
1. 第二章 PHP 与 SAPI 的生命周期 脚本的运行周期
2. 模块/脚本的起始与终止函数; ...

Filed in PHP Extension, PHP源码分析
with 24 Comments