Я создал класс File, который отвечает за все операции над файлами, ввод-вывод и действует по-разному в зависимости от характера файлов.Я не доволен его фактической структурой, которая выглядит следующим образом:
class File
{
function __construct($id)
{
$bbnq = sprintf("
SELECT *
FROM documents
WHERE id = %u",
$id);
$req = bbnf_query($bbnq);
$bbn = $req->fetch();
$this->file_type = $bbn['file_type'];
$this->file_name = $bbn['file_name'];
$this->title = $bbn['title'];
}
function display()
{
return '<a href="'.$this->file_name.'">'.$this->title.'</a>';
}
}
class Image extends File
{
function __construct($id)
{
global $bbng_imagick;
if ( $bbng_imagick )
$this->imagick = true;
parent::__construct($id);
}
function display()
{
return '<img src="'.$this->file_name.'" alt="'.$this->title.'" />';
}
}
Здесь мне нужно сначала узнать тип файла, чтобы определить, какой класс / подкласс использовать.
И я 'Я хотел бы достичь противоположного, то есть отправить идентификатор моему классу, который возвращает объект, соответствующий типу файла.
Я недавно обновил до PHP 5.3, и я знаю, что есть некоторые новые функции, которые могут быть полезны длясоздание "фабрики" (поздние статические привязки?).Мои знания ООП довольно легки, поэтому мне интересно, есть ли у некоторых структурные предложения, чтобы создать уникальный класс, который будет вызывать правильный конструктор.
Спасибо!