Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Решение задачи. Внутренние (встроенные) функции




Внутренние (встроенные) функции

Переменные функции

PHP поддерживает концепцию переменных функций. Это значит, что если имя переменной заканчивается круглыми скобками, то PHP ищет функцию с таким же именем и пытается ее выполнить.

<?/* создадим две простые функции: Add_sign – добавляет подпись к строке иShow_text – выводит строку текста */ function Add_sign($string, $sign="С уважением, Петр"){ echo $string." ".$sign;}function Show_text(){ echo "Отправить сообщение по почте<br>";}$func = "Show_text"; // создаем переменную со значением, // равным имени функции Show_text$func(); // это вызовет функцию Show_text$func = "Add_sign"; // создаем переменную со значением, // равным имени функции Add_sign$func("Привет всем <br>"); // это вызовет функцию // Add_sign с параметром "Привет всем"?>

Пример 5.11. Использование переменных функций (html, txt)

В этом примере функция Show_text просто выводит строку текста. Казалось бы, зачем для этого создавать отдельную функцию, если существует специальная функция echo(). Дело в том, что такие функции, как echo(), print(), unset(), include() и т.п. нельзя использовать в качестве переменных функций. То есть если мы напишем:

<?$func = "echo ";$func("TEXT");?>

то интерпретатор выведет ошибку:

Fatal error: Call to undefined function: echo() inc:\users\nina\tasks\func\var_f.php on line 2

Поэтому для того, чтобы использовать любую из перечисленных выше функций как переменную функцию, нужно создать собственную функцию, что мы и сделали в предыдущем примере.

Говоря о функциях, определяемых пользователем, все же нельзя не сказать пару слов о встроенных функциях. С некоторыми из встроенных функций, такими как echo(), print(), date(), include(), мы уже познакомились. На самом деле все перечисленные функции, кроме date(), являются языковыми конструкциями. Они входят в ядро PHP и не требуют никаких дополнительных настроек и модулей. Функция date() тоже входит в состав ядра PHP и не требует настроек. Но есть и функции, для работы с которыми нужно установить различные библиотеки и подключить соответствующий модуль. Например, для использования функций работы с базой данных MySql следует скомпилировать PHP с поддержкой этого расширения. В последнее время наиболее распространенные расширения и соответственно их функции изначально включают в состав PHP так, чтобы с ними можно работать без каких бы то ни было дополнительных настроек интерпретатора.

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

Разобьем задачу на несколько подзадач: выбор типов элементов ввода и их количества, создание названий элементов ввода и обработка полученных данных, т.е. непосредственно генерация формы. Первая задача достаточно проста: нужно написать соответствующую форму, например подобную приведенной ниже (task_form.html):

<form action="ask_names.php">Создать элемент "строка ввода текста": <input type=checkbox name=types[] value=string><br>Количество элементов: <input type=text name=numbers[string] size=3><br><br>Создать элемент "текстовая область": <input type=checkbox name=types[] value=text><br>Количество элементов: <input type=text name=numbers[text] size=3><br><input type=submit value="Создать"></form>

Листинг 5.12. task_form.html (html, txt)

Когда мы пишем в имени элемента формы, например types[], это значит, что его имя – следующий элемент массива types. То есть у нас первый элемент формы ("строка ввода текста") будет иметь имя types[0], а второй (текстовая область) – types[1]. В браузере task_form.html будет выглядеть примерно так:


Рис. 5.1. Форма для выбора создаваемых элементов и их количества

После отправки данных этой формы мы получим информацию о том, какие элементы и сколько элементов каждого типа нужно создать. Следующий скрипт запрашивает названия для этих элементов:

Листинг 5.13. ask_names.php (html, txt)

Допустим, нужно создать два элемента типа «текстовая строка» и один элемент типа «текстовая область», как и отмечено в форме выше. Тогда скрипт ask_names.php обработает ее таким образом, что мы получим такую форму:


Рис. 5.2. Форма для ввода названий создаваемых элементов

Введем в эту форму, например, строки «Название», «Автор» и «Краткое содержание». Эти данные будет обрабатывать скрипт task.php.

Листинг 5.14. task.php (html, txt)

Результатом работы этого скрипта с входными данными, приведенными выше, будет следующая форма:


Рис. 5.3. Пример формы, сгенерированной нашей программой

Заключение

Подведем итоги. В этой лекции мы изучили функции, определяемые пользователем, их синтаксис и семантику, способы передачи их аргументов и возвращаемых значений. Кроме того, обсуждались способы задания и работы с функциями, имеющими переменное число аргументов и альтернативный способ вызова функции (с помощью переменной, значение которой есть имя функции). В следующей лекции будет рассмотрена объектная модель языка PHP.


Лекция 6. Объекты и классы в PHP

В этой лекции мы рассмотрим объектную модель, предлагаемую языком PHP. Будут представлены понятия класса и объекта, способы их задания и использования, способы расширения классов, конструкторы классов, механизмы наследования и т.п. Кроме того, мы затронем некоторые нововведения, касающиеся объектной модели, появившиеся в PHP5.

В качестве примера решим задачу автоматической генерации по желанию пользователя представителей классов статей или личностей, а также их отображения на странице браузера.

Классы и объекты

Начнем с основных понятий объектно-ориентированного программирования – класса и объекта. Существует множество определений этих понятий. Мы дадим следующее: объект – это структурированная переменная, содержащая всю информацию о некотором физическом предмете или реализуемом в программе понятии, класс – это описание таких объектов и действий, которые можно с ними выполнять.

В PHP класс определяется с помощью следующего синтаксиса:

class Имя_класса{ var $имя_свойства; /*список свойств*/ function имя_метода(){ /* определение метода */ } /*список методов*/}

Имена свойств объектов класса объявляются с помощью ключевого слова var, методы, применимые к объектами данного класса, описываются функциями. Внутри определения класса можно использовать ключевое слово this для обращения к текущему представителю класса.

Например, нам нужно создать класс, описывающий категорию статей. У каждой статьи имеются такие свойства, как название, автор и краткое содержание. Какие действия мы хотим совершать со статьями? Возможно, нам понадобится задавать значения перечисленным свойствами статьи, отображать статью в браузере. Тогда определение этого класса может выглядеть следующим образом:

<?class Articles { // Создаем класс Статей var $title; var $author; var $description;// метод, который присваивает значения// атрибутам класса function make_article($t, $a, $d){ $this->title = $t; $this->author = $a; $this->description = $d; }//метод для отображения экземпляров класса function show_article(){ $art = $this->title. "<br>". $this->description. "<br>Автор: ". $this->author; echo $art; }}

Итак, для описания физических объектов типа «статья» мы создали класс с именем Articles, состоящий из трех переменных, содержащих характеристики статьи, и двух функций для создания конкретной статьи и для ее отображения.

Как известно, работая с PHP, можно периодически переключаться в режим HTML. В этом случае программа состоит из нескольких кусков (блоков) кода. Определение класса нельзя разносить по разным блокам php-кода и тем более по разным файлам. То есть если написать:

<?phpclass Articles { // Начало описания класса var $title;?><?php// продолжение описания класса function show_article(){ // содержание метода }} // конец описания класса?>

то программа не будет работать корректно.

Несколько замечаний по поводу имен классов. Имя класса должно удовлетворять правилам именования объектов в языке PHP, но есть ряд имен, которые зарезервированы разработчиками для своих целей. В первую очередь это имена, начинающиеся с символа подчеркивания «_». Для создания классов и функций нельзя использовать такие имена. Кроме того, зарезервировано имя stdClass, поскольку оно используется внутри движка PHP.




Поделиться с друзьями:


Дата добавления: 2014-01-06; Просмотров: 344; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.007 сек.