比特长标题,归结为:
<?php
class error
{
public function error($errormsg = false, $line = false)
{
echo 'errormsg: '.$errormsg.' on line: '.$line;
}
}
?>
当我在另一个文件中调用此类时,例如:
<?php
$error = new error;
?>
它已经在函数'error'中执行了echo。当函数名称相同时,函数是否继承了与__construct相同的行为,或者我只是错过了一些非常愚蠢的东西(我是初学者ooper :))
提前Tnx
答案 0 :(得分:3)
此:
class error
{
public function error($errormsg = false, $line = false)
{
echo 'errormsg: '.$errormsg.' on line: '.$line;
}
}
是php4的做法,考虑一下:
class error
{
public function __construct($errormsg = false, $line = false)
{
echo 'errormsg: '.$errormsg.' on line: '.$line;
}
}
两者都是一样的,第一个是 php4 以后的方式是 php5 方式。
答案 1 :(得分:1)
在PHP4中,构造函数与类具有相同的名称。我相信如果你定义一个__construct
函数,它应该阻止调用PHP4样式的构造函数。这种行为记录在constructors PHP手册页上,是防止PHP4样式构造函数被调用的唯一方法,而不是编辑PHP的源代码并重建它。
另一种解决方案是重命名该方法。 error::error
对我来说有点奇怪。考虑类似error::log
或error:report
的内容,这似乎更合适。
答案 2 :(得分:1)
是的,它与__construct()
这是因为其他语言中的许多其他OOP实现使用相同的名称。因此PHP遵循这一点,因此这样做。
答案 3 :(得分:1)
与__construct(
)功能相同。
参见PHP手册:
为了向后兼容,如果是PHP 5 找不到__construct()函数 对于给定的类,它将搜索 旧式构造函数,由 班级的名称。实际上,它 意味着唯一的情况 如果有兼容性问题 class有一个名为__construct()的方法 用于不同的 语义。
如果声明在PHP5中调用了两个函数__construct()
并在PHP4中调用了error()