问题解决方法
我有一个这样的类,它有一个重载的构造函数
代码
<?php
/*
Users Abstract Class
*/
abstract class User
{
protected $user_email;
protected $user_username;
protected $user_password;
protected $registred_date;
//Default constructor
function User()
{
}
//overloded constructor
function User($input_username,$input_email,$input_password)
{
__set($this->user_username,$input_username);
__set($this->user_email,$user_password);
__set($this->user_password,$input_password);
}
}
?>
问题详细信息
以上代码提供了一个错误:error:Fatal error: Cannot redeclare User::User()
由于其他语言,如C++和Java使用上述方法来重载构造函数,如何在、PHP、OOP、中实现重载?
更多信息
我在LAMP *中使用*PHP 5.3.2,这个版本应该完全支持OOP概念
发布于 2011-10-12 01:06:52
PHP没有重载。它有一系列神奇的方法,在手册中被描述为重载(参见:http://php.net/manual/en/language.oop5.overloading.php),但这并不是您想要的。
另外,在5+中编写构造函数的正确方法是使用__construct方法:
public function __construct(/* args */)
{
// constructor code
}
发布于 2011-10-12 18:46:44
你根本不能根据它们的参数重载方法。在您的例子中,答案可能和my answer to a similar question here一样简单
发布于 2011-10-12 01:02:28
正如你从其他语言中所知道的那样,重载在PHP中不受支持。相反,您可以使用func_get_args();
并对其进行操作。
http://www.php.net/func_get_args
有关PHP中重载可能性的更多信息:http://php.net/manual/en/language.oop5.overloading.php
https://stackoverflow.com/questions/7729700
复制相似问题