Leonid
PHP? нет, не слышал...
ООП: Класс должен содержать несколько экземпляров другого класса. Как реализовать.
Задача такая. Создаю класс для формирования HTML-формы.
Есть класс FormElement для описания абстрактного элемента формы и его классы наследники для каждого типа элемента - FormElementText, FormElementSelect. У каждого из этих классов есть метод GetElement для получения HTML кода элемента.
Теперь можем создавать какую либо форму (точнее новый класс)
Прошу прощения за большой код, но вопрос такой. Это грамотный подход, или можно как-то попроще?
Задача такая. Создаю класс для формирования HTML-формы.
PHP:
class HTMLForm // Скорее всего абстрактный класс, т.к. для каждой конкретной формы будет свой надкласс
{
var FormTitle; // название формы
var FormHTML;
function FormStart()
{
// начало формы
$this->FormHTML = '<form><h1>'.$this->FormTitle.'</h1>';
}
function FormEnd()
{
// конец формы
$this->FormHTML .= '</form>';
}
function GetElements()
{
// функция для заполнения формы элементами text, select и пр.
}
function __construct()
{
$this->FormStart();
$this->GetElements();
$this->FormEnd();
}
function GetForm()
{
return $this->FormHTML;
}
}
PHP:
class FormElement
{
var $Value, $Name;
var $ElementHTML;
function ElStart()
{
$this->ElementHTML = $this->$title.'<br>';
}
function CreateElementHTML()
{
$this->ElStart();
$this->ElContent($this->Value,$this->Name)
}
abstract function ElContent($Value,$Name);
function GetElement()
{
return $this->ElementHTML;
}
}
class FormElementText extends FormElement
{
function ElContent($Value,$Name)
{
return '<input type ="text" name = "'.$Name.'" value=".$Value."> ';
}
}
Теперь можем создавать какую либо форму (точнее новый класс)
PHP:
class Form1 extends Form
{
function GetElements()
$item = new FormElementText;
$item-> Name = 'Login';
$item-> Value = 'mylogin';
$item-> CreateElementHTML();
$FormHTML .= $item->GetElement();
// Хотя конечно правильнее иметь функции SetName и SetValue, или запихнуть их установку в конструктор, но в данном случае не важно
$item = new FormElementText;
$item-> Name = 'Username';
$item-> Value = 'Вася';
$item-> CreateElementHTML();
$FormHTML .= $item->GetElement();
return $FormHTML;
}
Прошу прощения за большой код, но вопрос такой. Это грамотный подход, или можно как-то попроще?


