Temelde ben işte bu hafta oluşturduk şey geribildirim veya rehberlik için arıyorum. Sorun belge yükleme iki tür vardı. Bu tür iki yüklenme gibi yöntemler, paylaşılan isUploaded, vb hareket Ancak, bazı durumlarda, her ikisi de eşsiz özelliğe vardı.
Yani bu ortak işlevselliği ve ortak işlevselliği miras için baz soyut sınıfını genişleten 2 ayrı sınıfları içeren soyut bir sınıf oluşturmak olacaktır işlemek için en iyi yaklaşım düşündüm.
Yani var:
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
}
Benim sorgu Ben doğru soyut yöntemler kullanıyorum, nedir? Ben doğru yolu izlemiştir. Ayrıca, ben soyut sınıfta yapı gerek emin değilim. Birisi $ yükleme çağrısı girişiminde ne varsa = new Yükleme ($ id)?