今天碰到一个很妖艳的问题,问题最后出在php没有重载又不报错,直接导致没有构造,使用的PHP版本是:5.2.5,我认为这是一个BUG。由于工作写的类不方便拿出来下面写一个完整的测试环境类给大家看:
abstract class father{
function father($a){
echo "class father";
}
}
class child extends father{
//子类构造函数(这是我错误的一个地方,但它导致了php另外一个错误)
function child(){
echo "test";
}
}
//run
$obj = new child('a');
执行后会发现父类的构造函数根本没有执行!但子类的构造由于参数不对也没有执行。
这个问题很明显:当我在子类中定义了构造函数,按照覆盖原理应该覆盖掉父类的一个构造函数,但是上述情况下由于已经定义了一个非默认参数的构造,这样子类定义的构造自动变成了重载而不是覆盖。而PHP又是不支持重载的,但这个时候应该报错,但神奇的事情发生了,PHP居然执行了,但是他显然没有执行我定义的父类的构造,而是执行了一个默认构造。这是其实产生了无法预知的错误,但PHP却莫名没有报错误,这应该是一个PHP的BUG。
我提交了一个bug report到php.net:
http://bugs.php.net/44149
分享到:
相关推荐
ATTLIST 属性 属性名称 CDATA #REQUIRED 属性值 CDATA #REQUIRED> <!ELEMENT 方法(参数*, 方法内容)> <!ATTLIST 方法 方法名称 CDATA #REQUIRED> <!ELEMENT 参数 EMPTY> <!ATTLIST 参数 参数名称 CDATA #REQUIRED ...
<settings> <data_type>xml</data_type> <!-- [xml] (xml / csv) 数据类型xml/csv--> <csv_separator>;</csv_separator> <!-- 如果使用csv作为数据的话,需要使用这个属性;表示文件数据分隔符,(平常以";...
* `<script>` 和 `<style>` 标记的内容必须被包围在 CDATA 段中 * 属性不可以简写 * 使用 `id` 属性,而不是 `name` 属性 * 标记不可以重叠 三、HTML 结构 HTML 结构包括: * `<!DOCTYPE>`: 定义文档类型 * `...
就象这样<convert converter="primitive" match="java.lang.Long"/><convert converter="primitive" match="long"/>. String类型和Date同样预先定义了Converter,这些converter都没有办法进行改变的,所有的String,...
3. **运算符重载**:虽然在给出的代码中没有明确的运算符重载,但在实际的面向对象设计中,运算符重载是常见的做法,可以为类对象提供更加直观的使用方式。 4. **动态内存管理**:`CList`类中的`deletelist`函数...
- **CSS的四种使用方式**:内嵌式(在HTML元素内部使用`style`属性),内部式(在`<head>`标签内的`<style>`标签中),外部链接式(通过`<link>`标签引用外部CSS文件),外部导入式(使用`@import`规则导入外部样式...
它利用更为强有力的JAVA语言的诸多特性(方法重载、集合概念以及映射),把SAX和DOM的功能有效地结合起来。 在使用设计上尽可能地隐藏原来使用XML过程中的复杂性。利用JDOM处理XML文档将是一件轻松、简单的事。 ...
对于OnMove函数的重载,这是用于处理记录指针移动的函数。根据不同的菜单命令(ID_RECORD_PREV, ID_RECORD_FIRST, ID_RECORD_NEXT, ID_RECORD_LAST),我们调用相应的Move函数,如MovePrev(), MoveFirst(), MoveNext...
- `CDATA`:用于表示XML文档中的CDATA段。 - `Comment`:用于表示XML文档中的注释。 - `DocType`:用于表示XML文档类型定义。 - `Document`:代表整个XML文档。 - `Element`:代表XML文档中的元素。 - `...
JDOM的主要优势在于它充分利用了Java语言的特性,如方法重载、集合框架、反射机制等,这使得Java开发者在处理XML数据时感觉更加自然。 - **特点:** - **面向Java优化:** JDOM针对Java语言进行了优化,利用了Java...
- `org.jdom`:基础包,包含了处理XML数据的基本类,如`Attribute`(属性)、`CDATA`(字符数据)、`Comment`(注释)、`DocType`(文档类型)、`Document`(文档)等。 - `org.jdom.input`:输入处理包,负责解析...