PDA

Просмотр полной версии : OOP в PHP для начинающего


up3gp
04.04.2010, 22:07
Учусь использовать классы и методы.

У меня много вопросов типа "а нафиг оно?" и почти нет типа "как это сделать".

Вот тут написал маленьки класс для создания форм.
Прокомментируйте его пожалуйса) ==>как вам оно=>мое начало.


<?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>";
}


}


?>

Gifts
04.04.2010, 22:17
up3gp опечатка fomr вместо form

Взять процедуры, написать вокруг них class Super_Puper_Class - еще не ООП

up3gp
04.04.2010, 22:25
Понимаю. Только не понимаю. Вот так.

Deathdreams
04.04.2010, 22:27
Класс пустой + многое непонятно, зачем в нём вообще переменные ?

А если я хочу задать input только для чтения, то что ?

up3gp
04.04.2010, 22:28
Тоесть, я просто для вывода формы, использовал класс. Это могла сделать и обычная функция. А как тогда реализовать класс для создания форм, чтобы он был объекто ориентированным классом , а не процеДурным.

up3gp
04.04.2010, 22:30
Класс пустой + многое непонятно, зачем в нём вообще переменные ?

А если я хочу задать input только для чтения, то что ?
я не думал об этом. Так как я такие поля не создаю. И скрытое тоже там не создаш)
"зачем в нём вообще переменные ?

" => сам не знаю. Я думал они там нужны)

up3gp
04.04.2010, 22:33
Я ведь говорю какие у меня вопросы. А нафиг оно, задавать эти переменные в начале класса?

Deathdreams
04.04.2010, 22:34
Тогда зачем вообще класс ?

Можно использовать отдельную функцию.

Вообще класс - "ниочём".

-----upd

public

Зачем ?
По дефолту он всегда паблик.

up3gp
04.04.2010, 22:44
Тогда зачем вообще класс ?

Можно использовать отдельную функцию.

Вообще класс - "ниочём".

-----upd

public

Зачем ?
По дефолту он всегда паблик.
пониманию.
Хотел научиться, но вышла ерунда.
А что в нем должно было быть к примеру? В классе для создания формы. Расскажите в теории кому не сложно.

DTW
05.04.2010, 01:17
Почитай ее книгу "Объектно-ориентированное программирование на PHP", написанную сотрудниками нашей студии Кузнецовым Максимом Валерьевичем и Симдяновым Игорем Вячеславовичем

http://softtime.ru/files/s_2007_09_30_133933.gif


Я не профи

объект класса формы может содержать другие объекты
например объект класса элемент поля
от него может быть порожденный новый объект класса
текстового поле.



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();

Neoveneficus
05.04.2010, 02:41
Ребят, а Вам не кажется, что это как-то геморройно отрисовывать формы таким образом?

Прежде всего нужно определиться, какую задачу должен решать класс.

Любая форма обычно связана с каким-то объектом: письмо, пользователь, запись в блоге. И я думаю, что нужно исходить именно от объекта. Например, ты скармливаешь конструктору формы экземпляр объекта - а он отрисовывает форму именно для этого объекта. Профит?