Учусь использовать классы и методы. У меня много вопросов типа "а нафиг оно?" и почти нет типа "как это сделать". Вот тут написал маленьки класс для создания форм. Прокомментируйте его пожалуйса) ==>как вам оно=>мое начало. PHP: <?php class Form { private $method; private $type; private $field_type; private $field_name; private $field_value; private $field_class; public function form_open($method,$type) { $this->method = $method; $this->type = $type; return "<fomr method='{$this->method}' '{$this->type}'>"; } public function field_create($field_type,$field_name,$field_value,$field_class) { $this->field_type = $field_type; $this->field_name = $field_name; $this->field_value = $field_value; $this->field_class = $field_class; return "<input type='{$this->field_type}' name='{$this->field_name}' value='{$this->field_value}' class='{$this->field_class}'>"; } public function form_close() { return "</form>"; } } ?>
up3gp опечатка fomr вместо form Взять процедуры, написать вокруг них class Super_Puper_Class - еще не ООП
Класс пустой + многое непонятно, зачем в нём вообще переменные ? А если я хочу задать input только для чтения, то что ?
Тоесть, я просто для вывода формы, использовал класс. Это могла сделать и обычная функция. А как тогда реализовать класс для создания форм, чтобы он был объекто ориентированным классом , а не процеДурным.
я не думал об этом. Так как я такие поля не создаю. И скрытое тоже там не создаш) "зачем в нём вообще переменные ? " => сам не знаю. Я думал они там нужны)
Тогда зачем вообще класс ? Можно использовать отдельную функцию. Вообще класс - "ниочём". -----upd Code: public Зачем ? По дефолту он всегда паблик.
пониманию. Хотел научиться, но вышла ерунда. А что в нем должно было быть к примеру? В классе для создания формы. Расскажите в теории кому не сложно.
Почитай ее книгу "Объектно-ориентированное программирование на PHP", написанную сотрудниками нашей студии Кузнецовым Максимом Валерьевичем и Симдяновым Игорем Вячеславовичем Я не профи объект класса формы может содержать другие объекты например объект класса элемент поля от него может быть порожденный новый объект класса текстового поле. PHP: class Form { private $element; private $action; private $method; private $name; private $value; public function __construct($element,$action,$method,$name,$value) { $this->element=$element; $this->action=$action; $this->method=$method; $this->name=$name; $this->value= $value; } public function cheak() { } public function viewform() { $formview ="<form action='{$this->action}' method='{$this->method}' name='{$this->name}' >"; echo $formview; foreach($this->element as $el) { $formview .= $el->viewelement(); } echo "<input type='submit' value='{$this->value}'></form>"; } public function __toString() { $this->viewform(); } } class Field { protected $style; protected $class; protected $name; public function __construct($style,$class,$name) { $this->style=$style; $this->class=$class; $this->name=$name; } } class Finput extends Field { private $type; private $value; public function __construct($type,$value,$name,$style="",$class="") { parent::__construct($style,$class,$name); $this->type=$type; $this->value=$value; } public function viewelement() { $viewelement="<input type='{$this->type}' value='{$this->value}'"; if(!empty($this->class)){ $viewelement .="class='{$this->class}'";} if(!empty($this->style)){$viewelement .="style='{$this->style}'"; } $viewelement .="name='{$this->name}'"; $viewelement .="/>"; echo $viewelement; } } $element = new Finput('text','textpole','my1'); $element2 = new Finput('text','textpole2','my2'); $form = new Form(array('element1'=>$element,'element2'=>$element2),'form.php','get','form1','send'); $form->viewform();
Ребят, а Вам не кажется, что это как-то геморройно отрисовывать формы таким образом? Прежде всего нужно определиться, какую задачу должен решать класс. Любая форма обычно связана с каким-то объектом: письмо, пользователь, запись в блоге. И я думаю, что нужно исходить именно от объекта. Например, ты скармливаешь конструктору формы экземпляр объекта - а он отрисовывает форму именно для этого объекта. Профит?