我最近开始使用php并且想知道__construct()和有一个与类同名的方法之间的区别?
是否有理由使用它?我可以解决的是它是否覆盖了名为Foo的方法,还是它更适合你喜欢的方法?
例如
class Foo {
function Foo()
{
echo 'Foo stated<br>';
}
function __construct() {
echo 'Construct started<br>';
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢
使用__construct()是更新的PHP5更多以OOP为重点的方法来调用构造函数.使用与该类同名的方法是旧的弃用方法,它不会像PHP 5.3.3那样用作命名空间类的构造函数.
为了向后兼容,如果PHP 5找不到给定类的__construct()函数,它将按类的名称搜索旧式构造函数.实际上,这意味着唯一具有兼容性问题的情况是该类是否有一个名为__construct()的方法,该方法用于不同的语义.
与其他方法不同,当使用与父__construct()方法不同的参数覆盖__construct()时,PHP不会生成E_STRICT级错误消息.
从PHP 5.3.3开始,与命名空间类名的最后一个元素同名的方法将不再被视为构造函数.此更改不会影响非命名空间的类.
"如果PHP 5找不到给定类的__construct()函数,它将通过类的名称搜索旧式构造函数.实际上,这意味着唯一具有兼容性问题的情况是class有一个名为__construct()的方法,用于不同的语义."
资料来源: http ://www.php.net/manual/en/language.oop5.decon.php