Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Решение задачи. Итак, мы хотели по выбору пользователя генерировать форму для ввода описания статьи

Читайте также:
  1. Antrag auf Erteilung einer Aufenthaltserlaubnis - Анкета для лиц, желающих получить разрешение на пребывание (визу)
  2. I Цели и задачи дисциплины
  3. I. Возможности пакета GeoScape и решаемые задачи.
  4. I. ЗАДАЧИ АРТИЛЛЕРИИ
  5. I. Необходимость этой задачи
  6. I. ОБЯЗАННОСТИ СОЛДАТА ПРИ ВЫПОЛНЕНИИ БОЕВОЙ ЗАДАЧИ В ТЫЛУ ПРОТИВНИКА
  7. I. Цели и задачи

Итак, мы хотели по выбору пользователя генерировать форму для ввода описания статьи или человека и отображать данные, введенные в эту форму. Попробуем решить эту задачу, используя объектно-ориентированный подход. Для начала создадим форму, где пользователь выбирает, что он хочет создать, – описание статьи или человека (точнее, это будут две формы):

<form action="task1.php">

Создать описание статьи: <input type=submit

name=art_create

value="Create Article">

</form>

<form action="task1.php">

Создать описание личности: <input

type=submit name=pers_create

value="Create Person">

</form>

Теперь напишем файл для обработки этих форм. В нем создадим два класса – статьи и личности. У каждого класса имеется метод для инициализации его переменных и метод для отображения объектов данного класса. При решении задачи будут использованы две функции, встроенные в PHP для работы с классами и объектами. Это функция get_class(объект), возвращающая имя класса, экземпляром которого является объект, переданный ей в качестве параметра. И функция get_class_vars(имя класса), которая возвращает массив всех свойств класса и их значений по умолчанию. Аналогично можно получить массив имен всех методов класса: get_class_methods (имя класса)

 

 

Листинг 15.6. Использование объектно-ориентированного подхода

 

<?php

// Создаем классы Статей и Личностей.

// Статья имеет заголовок, автора и

// описание. Личность имеет имя, фамилию

// и e-mail

class Article {

var $title;

var $author;

var $description;

// метод, который присваивает значения

// атрибутам класса

function Article($t="Название отсутствует",

$a="Автор отсутствует",

$d="Описание отсутствует"){

$this->title = $t;

$this->author = $a;

$this->description = $d;

}

//метод для отображения экземпляров класса

function show(){

$art = "<h2>$this->title</h2><font

size=-1>$this->description</font><p>Автор:

$this->author</p>";

echo $art;

}

}

// Определение класса Личностей

class Person {

var $first_name;

var $last_name;

var $email;

//метод, который присваивает значения атрибутам класса

function Person($t="Имя не введено",

$a="Фамилия не введена",$d="Email не указан"){

$this-<first_name = $t;

$this-<last_name = $a;

$this-<email = $d;

}

//метод для отображения экземпляров класса

function show(){

$art = "<h2>$this->first_name</h2><font

size=-1>$this->last_name</font><p>Автор:

$this->email</p>";

echo $art;

}

}

// Далее следует собственно создание и отображение

// экземпляров выбранного класса

if (isset($_GET["art_create"])){ //Если была выбрана статья

$art = new Article; // создаем представителя класса статей

$art_vars = get_class_vars(get_class($art)); //какие

// аргументы этого класса нужно задать

Make_form($art,$art_vars,"art_create"); //вызов функции

// создания формы

if (isset($_GET["create_real"])){ Show_($art_vars); }

// если данные этой формы отправлены, то вызываем

// функцию показа

}

//то же самое, если была выбрана личность

if (isset($_GET["pers_create"])){

$art = new Person;

$art_vars = get_class_vars(get_class($art));

Make_form($art,$art_vars,"pers_create");

if (isset($_GET["create_real"])){ Show_($art_vars); }

}

// функция создания формы

function Make_form($art,$art_vars,$glob){

$str = "<form>"; // html код формы записывается

// в строку $str

//перебираем список переменных класса объекта $art

foreach ($art_vars as $var_name => $var_value){

$str.="$var_name<input type=text name=$var_name><br>";

//создаем элемент формы с именем свойства класса

}

$str.= "<input type=hidden name=$glob>"; // чтобы не

// забыть, что мы создаем

$str.= "<input type=submit name=create_real

value='Create and Show'></form>";

echo "$str"; // выводим форму

}

// функция показа объекта

function Show_($art_vars){

global $art; //используется глобальное имя объекта

$k = count($art_vars); //число свойств класса

// (переменных в форме)

$p=0; //вспомогательная переменная

foreach ($art_vars as $name => $value){

$p++;

if ($_GET["$name"]=="") $val= $art->$name;

else $val = $_GET["$name"];

if ($p<>$k) $par.='"'. $val.'",';

else $par.='"'. $val.'"';

}

$par = '$art->'.$const."(".$par.");";

// теперь $par представляет собой php-код для вызова

// метода класса $art, изначально

// записанного в $par

// например,

// $art->Person('Vasia','Petrov','vas@intuit.ru');

eval($par); // функция eval выполняет код,

// содержащийся в $par

$art->show();

}

?>

 

 


УТВЕРЖДЕНЫ

на заседании кафедры

«Информационные системы»

учреждения «Университет «Туран»

Протокол № __ от «____»________ 2012 г.

Заведующая кафедрой

___________________С.А.Тусупова

ПЛАН ЛАБОРАТОРНЫХ ЗАНЯТИЙ

 

 

Тема 1. Создание и вывод переменных

Тема 2. Арифметические, логические операторы

Тема 3. Условные операторы

Тема 4. Циклические операторы

Тема 5. Таблица умножения

Тема 6. Массивы

Тема 7. Навигационное меню

Тема 8. Практическое использование функции

Тема 9. Работа с функциями. Область видимости переменных.

Тема 10. Функции для работы с переменными.

Тема 11. Математические функции

Тема 12. Функции explode, implode, htmlspecialchars

Тема 13. Функции htmlentities, html_entity_decode

Тема 14. Функции ltrim, rtrim, trim

 

Преподаватель: ________________________Бияшев Р.Г.

СОГЛАСОВАНО:

 

Заведующий кафедрой _______________________Тусупова С.А.

 

«_________»________________________2012 г.

 


учреждение «Университет «Туран»


Дата добавления: 2015-08-13; просмотров: 78 | Нарушение авторских прав


Читайте в этой же книге: Практическая работа № 6 | Основы работы с DOM | Работа с регулярными выражениями | Работа с сессиями | Использование HTTP-заголовков | Распространенные ошибки | Классы и объекты | Инициализация переменных | Объекты | Extends |
<== предыдущая страница | следующая страница ==>
Конструкторы| Лабораторная работа 7 - Работа с функциями. Область видимости переменных.

mybiblioteka.su - 2015-2024 год. (0.021 сек.)