php4以前的版本中,类的构造函数即是类的同名函数,而到了php5类的构造函数多了一个__construct魔法函数,那当这两个同时存在时,构造实例时调用的到底是哪个函数呢?
有疑问就直接敲代码来验证答案:
1、两个函数都存在的情况下
<?php
class A{
var $str = "construct";
function __construct(){
$this->str = "construct";
}
function A(){
$this->str = "A";
}
}
$a = new A();
echo $a->str;
?>
运行结果输出是construct
这里如果__construct(){}不设置值时,其输出结果也为空,并不会是A。
2、如果魔法函数不存在时
<?php
class A{
var $str = "construct";
function A(){
$this->str = "A";
}
}
$a = new A();
echo $a->str;
?>
输出结果为A,
这说明魔法函数优先级要大于同名函数,两者同时存在时只调用魔法构造函数。
分享到:
相关推荐
在PHP编程语言中,类的构造函数`__construct()`是一个特殊的方法,用于在创建对象时自动执行。在ThinkPHP框架中,构造函数同样扮演着重要的角色,但它与PHP的默认行为有所不同,特别是在处理继承关系时。 首先,让...
以上就是在ThinkPHP框架中构造函数`__construct()`和`_initialize()`的区别及使用方法。在实际开发中,根据项目的具体需求,合理选择和使用构造函数,确保对象的正确初始化,是保证应用稳定运行的关键。
通过以上介绍可以看出,构造函数和析构函数在 PHP 中起着重要作用。构造函数用于初始化对象状态,而析构函数则用于清理资源。合理地使用这两种函数可以帮助开发者更好地管理和控制对象生命周期中的各种行为。
### PHP中的构造函数和析构函数 在PHP中,类的实例化过程涉及到了构造函数与析构函数的使用。这两个特殊的方法对于控制对象的生命周期至关重要。本文将详细介绍PHP中的构造函数和析构函数,包括它们的作用、用法...
在PHP编程中,类是面向对象编程的基础,而构造函数和析构函数是类中两个非常重要的特殊方法,用于在对象生命周期的不同阶段执行特定的任务。本文将深入探讨这两个概念及其常见错误,帮助初学者更好地理解和避免相关...
例如,在提供的代码中,`Person`类有两个构造函数:`__construct0()`和`__construct1()`。这两个方法分别接受参数和不接受参数,用于初始化`Person`对象的`name`和`age`属性。尽管PHP不支持方法重载,但这里通过`__...
在这个例子中,`__construct`就是构造函数,它接受两个参数`$length`和`$width`,并分别赋值给类的成员变量`$this->length`和`$this->width`。`getArea`方法用于计算矩形的面积。 析构函数则与构造函数相反,它在...
对于向后兼容性,如果PHP 5在类中找不到`__construct()`,它会尝试找到一个与类同名的函数作为旧式的构造函数。因此,只有在类中同时存在`__construct()`方法且不作为构造函数使用时,才会出现兼容性问题。 接下来...
通过深入理解构造函数、析构函数和引用,开发者可以更有效地利用PHP的面向对象特性,编写出高效、可维护的代码。在实际项目中,这些概念对于创建复杂的、具有状态和行为的对象至关重要,尤其是在需要管理资源和确保...
如果类中同时定义了与类名同名的构造函数和__construct方法,那么PHP将优先调用__construct方法。 因此,当开发者面对需要同时支持PHP4和PHP5的场景时,就会遇到兼容性问题。为了确保旧版本PHP的代码能够继续运行而...
- **问题分析**:默认构造函数和拷贝构造函数的隐式生成可能导致意外的行为。例如,默认构造函数可能不会正确初始化某些成员变量;而编译器自动生成的拷贝构造函数可能会产生浅拷贝而非深拷贝,从而导致数据不一致...
这是一个非常重要的知识点,因为正确地使用构造函数可以确保类的实例在开始使用时具备正确的配置和数据。 在描述中提到的`function non object`错误,通常意味着尝试调用一个非对象的方法或属性。这通常发生在你...
构造函数的名字是`__construct()`,并且可以包含任何需要在对象创建时运行的代码。本文将详细讨论PHP中构造函数的继承规则及其使用方法。 ### 第一种情况:子类没有定义构造函数 如果子类没有定义自己的构造函数,...
2. **实例化类和构造函数的调用** 假设我们有以下两个类: ```php <?php class A { public function __construct() { echo 'Class A'; } } class B extends A { public function __construct() { echo ...
C++ defaul construct :缺省构造函数(默认构造函数) ... 我们通常说的派生类和基类,我们调用派生类的自定义的构造函数的时候,派生类会自动调用基类中的default construct函数,而不能调用基类中的其他构造函
### 构造函数继承在Java中的应用 构造函数继承是面向对象编程中一个重要的概念...通过以上介绍可以看出,在Java中正确理解和使用构造函数继承是非常重要的,它有助于更好地组织代码结构,提高代码的复用性和可维护性。
在这个例子中,`dateAndTime` 类定义了四个构造函数:一个无参数的构造函数`construct_()`,一个接收`DateTime`对象的构造函数,一个接收数字的构造函数,以及一个接收时间字符串的构造函数。这些构造函数根据传入的...