Fondamentalement, je suis à la recherche de commentaires ou de conseils sur quelque chose que j'ai créé cette semaine au travail. Le problème était que j'avais deux types de téléchargement de documents. Ces types à la fois des méthodes partagées comme upload, isUploaded, move etc. Mais, dans certains cas, ils avaient tous les deux une fonctionnalité unique. Donc je pensais que la meilleure approche pour gérer cela serait de créer une classe abstraite qui contient la fonctionnalité commune et 2 classes séparées qui étendent la classe abstraite de base afin d'hériter de la fonctionnalité commune.Recherche de confirmation ou de conseils sur l'utilisation de la classe abstraite dans Php
J'ai donc:
abstract class Upload {
protected $_id;
protected $_name;
protected $_dbTable;
abstract public function create(Filter $filter) {}
abstract public function update(Filter $filter) {}
public function __construct($id){
if(!is_null($id)){
$class = new get_called_class();
return new $class($id);
}
}
protected function upload(){
//Code implemented
}
protected function isUploaded(){
//Code implemented
}
protected function move(){
//Code implemented
}
}
Class Book_Upload extends Upload {
$dbTable = 'book';
public function __construct($id){
//Database stuff to obtain record information
//Set protected member variables
$results = $databaseCall();
$this->_id = $results['id'];
$this->_name = $results['name'];
}
public function create(Filter $filter) {
//Code implemented
}
public function update(Filter $filter) {
//Code implemenetd
}
//Other unique functions
}
Class Magazine_Upload extends Upload {
$dbTable = 'magazine';
Same as Booking_Upload but with additional functionality
plus abstract methods
}
Ma requête est, j'utilise des méthodes abstraites correctement? Ai-je suivi le bon chemin? De plus, je ne suis pas sûr d'avoir besoin de la construction dans la classe abstraite. Que se passe-t-il si quelqu'un tente d'appeler $ upload = new Upload ($ id)?
Oh, la logique ci-dessus a été re-tapée à partir de la mémoire afin d'ignorer toutes les erreurs syntaxiques. –