J'ai un problème pour étendre une classe qui elle-même étend une classe abstraite.Problème avec l'extension d'une classe
La classe abstraite de base a les méthodes suivantes:
Résumé:
private final __construct()
abstract protected function loadFromId()
private static final load($id)
classe 1 se prolonge Résumé:
protected loadFromId()
classe 2 étend la classe 1:
//nothing as of yet
La raison pour laquelle j'étend la classe 1 à partir de la classe 2 est que j'en ai besoin pour renvoyer une instance de la classe 1. La classe 2 retournera fondamentalement un objet nul à des fins de validation.
Si je tente d'étendre la classe 1:
Class 2 extends Class 1 { }
Je reçois l'erreur suivante « Cannot override final method class::__construct()
», évidemment parce qu'elle est une méthode privée.
Y at-il un moyen que je peux créer un objet nul basé sur la classe 1?
Vous ne pouvez obtenir que 'Impossible de surcharger la méthode finale class :: __ construct() 'si vous avez réellement placé un autre constructeur dans une des sous-classes (qui ne peut évidemment pas fonctionner à cause du mot clé [final'] (http: // .php.net/manual/fr/language.oop5.final.php)). Sinon, vous devriez obtenir une erreur fatale: appel à private A :: __ construct() à partir d'un contexte invalide. – Gordon