ООП это просто

1.27K
.
(\/)____o_O____(\/)
Расскажу как я начал писать ориентированно. Многие на форуме этого пугаются, хотя сами давно уже понимают как работают функции, класс это можно считать сборник функции , причем функции эти работают только в этом классе. Пример будет самый примитивный чтоб передать всю суть. И сам по себе класс будет делать, то что понятно всем, а именно рисовать форму. Формы это один из основных методов передачи данных в скрипт, пусть это будет отправка личной почты или сообщения в гостевую книгу.
.
(\/)____o_O____(\/)
class koeform {
public $form = '';
public $act;
public $method;
public $formname;
public $hiden = array();
public $formid;
public $legend;

function __construct($act, $method = '', $formname = '', $formid = '', $hidden = '', $legend = '') {
$this->act = $act;
$this->method = $method ? $method : 'post';
$this->formname = $formname ? $formname : '';
$this->formid = $formid ? $formid : '';
$this->hidden = $hidden ? $hidden : '';
$this->legend = $legend ? $legend : '';
}
function init() {
$form = '<form action="' . $this->act . '" method="' . $this->method . '" ';
$form .= $this->formid ? 'id="' . $this->formid . '"  ' : ''; 
$form .= $this->formname ? 'name="' . $this->formname . '">' : '>';
$form .= $this->legend ? '<fieldset><legend>' . $this->legend . '</legend>' : '';
if (sizeof($this->hidden)) {
foreach ($this->hidden as $k => $v) { 
$form .= PHP_EOL . '<input type="hidden" name="' . $k . '" value="' . $v . '" />' . PHP_EOL; 
}
}
return $this->form = $form . PHP_EOL;
}

function inputform($name, $text = '', $value = '', $size = 20, $max = '', $readonly = 0) {

$form = '';
$form .= $text ? '<b>' . $text . '</b><br/>' : '';
$form .= '<input type="text" name="' . $name . '" value="' . $value . '" size="' . $size . '" ';
$form .= $readonly ? 'readonly="readonly" ' : '';
$form .= $max ? 'maxlength="' . $max . '" /><br/>' : '/><br/>';
return $this->form .= PHP_EOL . $form . PHP_EOL;
} 

function textareaform($name, $text = '', $value = '', $rows = 5, $cols = 40, $readonly = 0) {
$form = '';
$form .= $text ? '<b>' . $text . '</b><br/>' : '';
$form .= '<textarea name="' . $name . '" rows="' . $rows . '" cols="' . $cols . '" ' . ($readonly ? 'readonly="readonly"' : '') . '>';
$form .= $value ? $value : '';
$form .= '</textarea><br/>';
return $this->form .= PHP_EOL . $form . PHP_EOL;
}

function selectform ($name, $param, $selected = 1) {
if (!is_array($param)) {
$form = '';
} else {
$form = '<select name="' . $name . '">' . PHP_EOL;
$x = 1;
foreach ($param as $k => $v) {
$form .= '<option value="' . $v . '" ' . ($x==$selected ? 'selected="selected"' : '') . '>' . $k . '</option>' . PHP_EOL;
$x++;
}
$form .= '</select><br/>';
}
return $this->form .= $form . PHP_EOL;
} 

function formprint($submitname = 'submit', $submitvalue = 'submit') {
$form = '<input type="submit" name="' . $submitname . '" value="' . $submitvalue . '" />' . ($this->legend ? '</fieldset>' : '') . '</form>';
return $this->form . PHP_EOL .  $form . PHP_EOL;
}
}

Ну и сама форма.
$form = new koeform($_SERVER['PHP_SELF'], '', 'testform', 'formid', array('username' => 'vasya', 'userid' => 555), 'Класс форм');
$form->init();
$form->inputform('test', 'Testing form', 'text');
$form->inputform('test2', 'Testing form2', '', 30, 25);
$form->inputform('test2', 'Testing form readonly', 'readonly test', 30, 25, 1);
$form->textareaform('test3', 'Testing form3', 'text3');
$form->textareaform('test4', 'Testing form4', 'readonly textarea' . PHP_EOL . 'произвольный текст', 7, 60, 1);
$form->selectform('select', array('картошка' => 25, 'капуста' => 15, 'морковка' => 10), 2);
$a = $form->formprint();

echo nl2br(htmlspecialchars($a));
echo '<br/>' . $a;

Сейчас подробно постараюсь рассказать.
.
(\/)____o_O____(\/)
В класс при вызове нужно обязательно сказать первый параметр, это куда скрипт будет отсылать данные с формы. В примере вызов идет сам на себя, можно просто передать пустой параметр

$form = new koeform('');
Остальные параметры передаются по желанию, можно сразу указать скрытые поля как ассоциативный массив, для дизайнеров можно сказать ид и имя формы, так же можно сказать метод передачи, чаще всего этот метод POST он выбран как параметр по умолчанию.
.
(\/)____o_O____(\/)
В вызове класса все параметры передаются в конструктор, который заполняет методы класса значениями, второй метод рисует шапку формы, подставляя в форму, если определено, метод передачи, имя и ид формы, и ссылку куда будет отправляться информация с формы, если указан массив для скрытых полей, добавляются скрытые поля.
.
(\/)____o_O____(\/)
Далее уже в зависимости от задачи собираем форму, нужно поле ввода имени, вызываем метод
inputform($name, $text = '', $value = '', $size = 20, $max = '', $readonly = 0)
Обязательный параметр это имя этого поля, если поле нужно подписать то указываем второй параметр, если в поле нужно становись какой то текст по умолчанию, то третий параметр, длину поля можно длинна поля по умолчанию 20, и возможность сделать только читаемое поле. То же самое с текстарией, широкое поле с возможностью многострочно вводить текст. И выпадающий список, принимающий ассоциативный массив
.
(\/)____o_O____(\/)
Каждый метод добавляет в переменную саму форму, и итоговый вызов метода printform рисует всю форму и добавляет кнопку. Можно передать параметры на имя кнопки и её значение. Пример http://koenig.h2m.ru/koeform.php
.
(\/)____o_O____(\/)
Написал пример в стиле ооп4, не считая конструктора. Все свойства можно вообще прописать как var равносильно public тоже самое с методами, если не указано ни чего, они публичные.
.
(\/)____o_O____(\/)
Кому не понятно , пишите вопросы в тему. Кому интересно можем попробовать доработать, добавить методы по рисованию чекбоксов или радиокнопок
.
метод это функция?
.
(\/)____o_O____(\/)
Tadochi, Метод это функция, свойство это переменная
Всего: 76