不是也许! 用以类名命名的方法作为构造函数,是 php 从 C++ 借鉴过来的 用 __construct 作为构造函数,是 php 从 Java 借鉴过来的 两者在 php5.4 之前可以并存。但从 php5.4 起,就只能用其一了,否则将会有一个 Redefining already defined constructor (重新定义已定义的构造函数)错误警告class A { function A() {} function __construct() {} //Strict Standards: Redefining already defined constructor for class A in ... }
这是老版本的构造函数 函数名和类名相同 相当于现在的__construct
等价于: <?php header("Content-Type:text/html;charset=utf-8"); class Arm { private $num = 2; public function __construct() { echo "我有".$this->num."双手!<br />"; } } $a = new Arm(); ?>在之前的PHP版本中,构造函数使用和类名同名来进行对象的初始化工作,但后面发现如果要更改类名,同时就要更改它的构造方法,所以在PHP5中,就被用__construct()函数来实现
楼主的第一个问题会输出是因为类里面的方法与类相同,又没有另外定义构造函数,会被认为是构造函数,所有初始化类的时候会执行同名方法了
用以类名命名的方法作为构造函数,是 php 从 C++ 借鉴过来的
用 __construct 作为构造函数,是 php 从 Java 借鉴过来的
两者在 php5.4 之前可以并存。但从 php5.4 起,就只能用其一了,否则将会有一个 Redefining already defined constructor (重新定义已定义的构造函数)错误警告class A {
function A() {}
function __construct() {} //Strict Standards: Redefining already defined constructor for class A in ...
}
<?php
header("Content-Type:text/html;charset=utf-8");
class Arm
{
private $num = 2;
public function __construct()
{
echo "我有".$this->num."双手!<br />";
}
}
$a = new Arm();
?>在之前的PHP版本中,构造函数使用和类名同名来进行对象的初始化工作,但后面发现如果要更改类名,同时就要更改它的构造方法,所以在PHP5中,就被用__construct()函数来实现
所以不要用别的语言里的方法判断,你写大写和小写结果是一样的