首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHP中的构造函数重载

PHP中的构造函数重载
EN

Stack Overflow用户
提问于 2011-10-12 01:00:23
回答 4查看 13.6K关注 0票数 9

问题解决方法

我有一个这样的类,它有一个重载的构造函数

代码

代码语言:javascript
复制
<?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概念

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-10-12 01:06:52

PHP没有重载。它有一系列神奇的方法,在手册中被描述为重载(参见:http://php.net/manual/en/language.oop5.overloading.php),但这并不是您想要的。

另外,在5+中编写构造函数的正确方法是使用__construct方法:

代码语言:javascript
复制
public function __construct(/* args */)
{
    // constructor code
}
票数 12
EN

Stack Overflow用户

发布于 2011-10-12 18:46:44

你根本不能根据它们的参数重载方法。在您的例子中,答案可能和my answer to a similar question here一样简单

票数 3
EN

Stack Overflow用户

发布于 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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7729700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档