Konstruktor Überladen in PHP
Problem Ansatz Weiter
Habe ich eine Klasse mit einem überladenen Konstruktoren
Code
<?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);
}
}
?>
Problem Details
Obige code enthält einen Fehler : error:Fatal error: Cannot redeclare User::User()
Als andere Sprachen wie C++ und Java verwendet den oben erwähnten Ansatz, um eine überlastung der Konstruktoren, wie es in PHP OOP ?
Zusätzliche Informationen
Im mit *PHP 5.3.2 in der LAMPE * die OOP-Konzepte sollten vollständig unterstützt in dieser version
- Mögliche Duplikate von Beste Weg, um mehrere Konstruktoren in PHP
Du musst angemeldet sein, um einen Kommentar abzugeben.
PHP nicht überladen. Es hat eine Reihe von magischen Methoden, die beschrieben werden, wie eine überlastung in dem Handbuch (siehe: http://php.net/manual/en/language.oop5.overloading.php), aber es ist nicht, was Sie denken.
Auch, nebenbei bemerkt, die richtige Art und Weise zu schreiben einen Konstruktor in PHP 5+ ist die Verwendung der __construct-Methode:
Können Sie nicht überlast-Methoden, basierend auf Ihre Argumente überhaupt. in Ihrem Fall kann die Antwort so einfach wie meine Antwort auf eine ähnliche Frage hier
Überladen, wie man Sie kennt aus anderen Sprachen wird nicht unterstützt in PHP. Verwenden Sie stattdessen
func_get_args();
und daran arbeiten.http://www.php.net/func_get_args
Mehr Informationen über die Möglichkeiten, wie der überlastung in PHP:
http://php.net/manual/en/language.oop5.overloading.php
Könnten Sie versuchen, etwas in dieser Art... Der Anwendungsfall ist auf der GitHub-gist