Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Разработать справочную систему по стандартным функциям выбранного языка программирования .

Содержание:

Введение

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

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

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

Целью курсовой работы является изучение наиболее популярных функций и создания веб-справочника

Исходя из поставленной цели определены следующие задачи:

  • Рассмотреть язык программирования PHP;
  • Рассмотреть наиболее востребованные встроенные функции данного языка
  • Создать базу данных для хранения информации;
  • Создать веб-справочник, который выводит информацию о функциях из БД.

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

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

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

В процессе написании курсовой работы была использована прежде всего официальная документация языка PHP, которая содержит исчерпывающую информацию о всех встроенных функциях, а также книги Бретт Маклафлин: PHP и MySQL Исчерпывающее руководство, Кевин Янк: PHP и MySQL. От новичка к профессионалу, Джанет Валейд - PHP 5 для чайников, Линн Бейли, Майкл Моррисон - Изучаем PHP и MySQL, Максим Кузнецов, Игорь Симдянов - Самоучитель PHP 5/6, Денис Колисниченко - PHP и MySQL. Разработка Web-приложений, Петербург», Робин Никсон - Создаем динамические веб-сайты с помощью PHP, Котеров Д. В., Костарев А. Ф. - PHP 5. 2-е издание.

1 PHP и стандартные функции

1.1 Описание и возможности PHP

PHP, расшифровывающийся как "PHP: Hypertext Preprocessor" - «PHP: Препроцессор Гипертекста», является распространенным интерпретируемым языком общего назначения с открытым исходным кодом. PHP создавался специально для ведения web-разработок и код на нем может внедряться непосредственно в HTML-код. Синтаксис языка берет начало из C, Java и Perl, и является легким для изучения. Основной целью PHP является предоставление web-разработчикам возможности быстрого создания динамически генерируемых web-страниц, однако область применения PHP не ограничивается только этим.[1]

Язык программирования PHP был разработан осенью 1994 года специально для облегчения задачи Web-разработки. Автором данного языка является Расмус Лердорф. Стоит отметить, что в 1994 году, языков программирования для создания Web-приложений не существовало, поэтому данный язык вызвал большой ажиотаж. Успех и сообщество стали двигателем прогресса данного языка, который развивается по сегодняшний день и является одним из самых популярных языков программирования.[2]

В конечном итоге PHP это текст, получаемый веб-сервером и превращаемый в набор команд и информации для веб-браузера. PHP дает возможность активно принимать участие во всем, что делается на ваших веб-страницах Благодаря данному языку программирования можно взаимодействовать с пользователями своего веб-сайта, минуя время статических HTML-страниц.[3]

Популярность языка программирования PHP основывается из следующих преимуществ:

  • Быстродействие Web-узлов — встраивание PHP в HTML-страницу снижает время для обработки и загрузки;
  • Открытость — PHP является полностью бесплатным языком программирования;
  • Простота использования — Синтаксис PHP прост и лаконичен;
  • Универсальность — PHP работает на ОС Windows, Linux и Mac OS;
  • Настраиваемость — Открытость PHP дает программисту достаточный контроль на всех этапах разработки и позволяет изменять программное обеспечение под свои нужды. [4]

На сегодняшний день PHP это:

  • Развитая функциональность для работы с сетевыми решениями;
  • Возможность создания полноценных объектно—ориентированных приложений;
  • Поддержка технологий COM, XML, Java, COBRA, WDDX, Macromedia FLASH; [5]

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

Стоит отметить, что для работы с СУБД не требуется разрабатывать систему управления, достаточно лишь вызвать нужную встроенную функцию, которая обеспечит должное управление. [6]

1.2 Стандартные функции PHP

Программирование процесс ресурсоемкий и время разработки является одним из главных критерий. Писать вновь и вновь очень похожие друг на друга куски кода не рационально, но к счастью в языке программирования есть такое понятие как функция. Функция — это набор инструкций, который выполняет конкретную задачу и в дополнение к этому может вернуть результат вычислений или какое-нибудь значение. Так можно изъять кусок часто повторяемого кода, поставить его в функцию и вызывать многократно в тот момент, когда его нужно выполнить. [7]

Достоинства и особенность функций в PHP заключается в следующих аспектах:

  • Экономия времени при наборе текста программы;
  • Сокращение количества синтаксических и прочих ошибок программирования;
  • Сокращение времени загрузки файлов программы;
  • Сокращение времени выполнения, поскольку каждая функция компилируется только один раз;
  • Параметры в функции можно использовать по умолчанию (переменное число параметров);
  • Каждая функция имеет собственную область видимости переменных, которая уничтожается по завершению работы;
  • Возможность возвратить результат вычислений при помощи команды return;
  • Тип возвращаемого результата из функций может быть любым;
  • Помимо создания собственной функции есть доступ к множеству готовых функций, встроенных в среду PHP. [8]

Помимо возможности создания собственной функции, в самом языке программирования PHP содержится достаточно большое количество стандартных функций, которые составляют «функциональный фундамент» PHP, поскольку являются неотъемлемой частью самого языка. Помимо этого, существуют функции расширений, которые требуют дополнительной их включение в состав PHP. Все они распространяются бесплатно, а общее количество стандартных функций и функций расширений составляет около 4200 функций. [9]

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

  • Функции обработки строк и символов;
  • Функции для работы с массивами;
  • Функции для работы с каталогами;
  • Функции для работы с файловой системой;
  • Функции для работы с базами данных;
  • Математические функции;
  • Функции для работы с датой и временем;
  • Функции для работы с HTTP и FTP;
  • Сетевые функции;
  • Функции электронной почты;
  • Функции для работы с регулярными выражениями;
  • Функции сокетов, куки и сессий;
  • Функции обработки ошибок и протоколирования;
  • Функции мультимедиа;
  • Дополнительные функции расширений.

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

Для своего проекта справочной веб-системы я выбрал наиболее востребованные и популярные категории функций. Такими считаются функции для работы со строками, математические функции, функции для работы с массивами, файлами, каталогами и СУБД, сетевые функции PHP и функции регулярных выражений. [11]

Для наглядности разберем пару функций. Первая функция принадлежит к категории «функции для работы со строками», ее название str_replace(). Данная функция ищет в тексте слово по шаблону и заменяет его на заданное слово, возвращая результат в переменную.

$result = str_replace('тысячу', 'сотню', 'Завтра родители дадут мне тысячу рублей на карманные расходы!');

Функция str_replace начнет поиск слова 'тысячу' в тексте 'Завтра родители дадут мне тысячу рублей на карманные расходы!', после его нахождения он подменит слово 'тысячу' на заданное слово 'сотню' и в результате данная функция вернет в переменную $result текст 'Завтра родители дадут мне сотню рублей на карманные расходы!'. [12]

Рассмотрим другую, востребованную функцию для подключения к базе данных MySQL. Она носит название PDO (PHP Data Object), ее структура выглядит следующим образом: new PDO {'mysql:host='адрес_сервера'; dbname='имя_базы_данных', 'имя пользователя', 'пароль'}. При внесении реальных данных для подключения к базе данных, функция PDO возвратит объект PDO, который определяет установленное соединение и позволяет работать с базой данных. [13]

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

1.3 Востребованность справочной системы

Для начала следует определить, чем является «Справочная система». Прежде всего, эта система предназначена для получения ее пользователем максимально точной информации по нужной теме. Обычно выбор такой информации происходит по разделам (категориям) справки. В моем случае, справочная система будет состоять из категорий функций языка программирования PHP. Каждая категория будет содержать список функций и краткое описание каждой функции. По нажатию на нужную функцию, пользователь попадет на страницу с ее полным описанием. [14]

Справочная система такого типа гораздо упрощает поиск по функциям языка программирования PHP. Достаточно правильно поставить цель поиска, например, «редактирование строки», перейти в справочник, выбрать категорию «Функции обработки строк и символов» и получить справочную информацию о нужной функции. Это сильно экономит время разработчика и повышает его эффективность, а также избавляет его от нужды запоминать все функции. Если учитывать то, что функций в среде PHP около 4200, то их запоминание задача не из легких и является не совсем рациональной.

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

2 Разработка справочной системы

2.1 Проектирование справочной системы

Для начала следует спроектировать рабочую среду. В первую очередь был выбран готовый сервер Open Server, который включает в себя нужные для курсового проекта программное обеспечение: Apache, MySQL, PHPMyAdmin, PHP. Это портативная серверная платформа и программная среда специально созданная для веб-разработчиков, включающая в себя список всех необходимых программ и распространяющаяся по бесплатной модели. Данная система работает на всех версиях OS Windows, начиная с Windows XP SP3. [15]

В качестве платформы для написания кода был выбран популярный и многофункциональный текстовый редактор Notepad++. Данный текстовый редактор является бесплатным и поддерживает синтаксис большого количества языков программирования. Его базовая функциональность может быть расширена за счет дополнительных модулей. [16]

Для проектирования базы данных MySQL был выбран официальный пакет MySQL Workbench. Это инструмент для визуального проектирования баз данных, интегрирующий проектирование, моделирование, создание и эксплуатации БД в единой системе. Также распространяется по бесплатной модели. [17]

Для Front-end разработки будут использоваться технологии HTML (Язык гипертекстовой разметки) и CSS (Каскадные таблицы стилей).

Для Back-end разработки будет использоваться язык программирования PHP (Препроцессор гипертекста).

Для базы данных будет использоваться MySQL (Свободная реляционная система управления баз данных).

Сперва спроектируем базу данных исходя из логического разделения информации на структуры в программе MySQL Workbench. Справочная система языка программирования PHP должна содержать категории и функции. Таблицы будут храниться в базе данных с названием «phpdir».

Таблица, содержащая категории (category) будет состоять из полей: «id» (уникальный идентификатор типа INT Primary Key NOT NULL) и «title» (название типа VARCHAR(100)). Таблица функций (function) будет состоять из полей «id» (уникальный идентификатор типа INT Primary Key NOT NULL), «idcategory» (типа INT) «title» (название типа VARCHAR(100)), «description» (краткое описание типа VARCHAR(255)), «text» (полное описание типа TEXT). Обе таблицы будут в кодировке UTF8 и принадлежать к типу InnoDB.

Запустим программное обеспечение MySQL Workbench и создадим вышеуказанные таблицы. Далее создадим модель и разместим на ней созданные таблицы. На данном этапе проектирование БД закончено.

Следующим этапом будет проектирование дизайна справочной системы. Его структура будет состоять из заголовка (header), боковой панели (sidebar), артикля (article) и подвала (footer). Его структура спроектирована в стандартном графическом редакторе Microsoft Paint.

Расположение элементов будет определено в каскадном шаблоне стилей с названием «style.css». Все элементы дизайна справочной системы будут растягивается под различные разрешения дисплее. Цветовая схема выбрана в сером стиле, чтобы не нести лишнюю нагрузку на пользователя.

Функциональная часть справочной системы будет построена по модели MVC (Model View Controller). В корне будут расположены следующие папки с файлами:

      • css
        • style.css
      • core
        • db.inc.php
      • model
        • category.inc.php
        • function.inc.php
      • view
        • main.html.php
        • sidebar.html.php
        • article.html.php
      • index.php

В папке css будет содержаться файл с каскадным стилем «style.css». В папке core содержится модуль подключения к базе данных «db.inc.php».

В папке model содержатся модели, «category.inc.php» отвечающая за вывод категорий из базы данных, «function.inc.php» отвечающая за вывод функций из базы данных.

В папке view содержатся html представления, «main.html.php» содержит в себе header, footer, а также подключаемые преставление «sidebar.html.php», которое выводит информацию из «category.inc.php» и «article.html.php», которое выводит первоначальную информацию сайта, а при выборе категории выводит информацию из модели «function.inc.php».

В корне справочной системы содержится контроллер «index.php».

2.2 Разработка справочной системы

Первым делом создадим базу данных MySQL, для этого в PhpMyAdmin введем команду CREATE DATABASE `phpdir`;

Далее в созданной базе создадим таблицу «category» при помощи следующего кода:

CREATE TABLE `category` (

`id` INT NOT NULL AUTO_INCREMENT,

`title` VARCHAR(100) NOT NULL,

PRIMARY KEY (`id`))

ENGINE = InnoDB CHARSET utf8;

Далее в созданной базе создадим таблицу «function» при помощи следующего кода:

CREATE TABLE `function` (

`id` INT NOT NULL AUTO_INCREMENT,

`idcategory` INT NULL,

`title` VARCHAR(100) NOT NULL,

`description` VARCHAR(255) NOT NULL,

`text` TEXT NULL,

PRIMARY KEY (`id`))

ENGINE = InnoDB CHARSET utf8;

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

После этого остается лишь наполнить созданные таблицы информацией.

Для таблицы «category» при помощи команды insert были заполнены категории и их заголовки.

Для таблицы «function» при помощи команды insert были заполнены название функций их краткое и полное описание, а также уникальный идентификатор категорий. (Приложение 1).

Первым делом создадим простой контроллер «index.php», его основная цель заключается в определение установленной переменной $_GET['cat'], которая сигнализирует о том, что пользователем была выбрана категория. После чего переменной $module будет задано название модуля вывода функций.

if(isset($_GET['cat']))

{

$module="article.html.php";

}

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

include_once "$path/view/main.html.php"; Приложение 2.

Стоит сразу отметить, что в папке core расположен файл, который отвечает за подключения к базе данных «db.inc.php». Подключения проходит через стандартную функцию PDO:

$pdo=new PDO('mysql:host=localhost;dbname=phpdir','root',''); Приложение 3,

Теперь создадим основной шаблон HTML в файле «main.html.php»:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<title>Справочная система по функциям PHP</title>

<link href="/css/style.css" type="text/css" rel="stylesheet" />

Тегом meta я указал в части head кодировку и тип страницы, далее тегом title я обозначил название страницы. Через link href была указана ссылка на каскадный стиль CSS.

<body>

<div id="container">

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

<div id="header"><p><a href="/">Справочная система по функциям PHP</a><p></div>

В блоке header указана название сайта с активной ссылкой, которая ведет на главную страницу.

<div id="sidebar"><?php include_once "$path/view/sidebar.html.php";?></div>

Далее в блоке боковой панели подключено представление, которое выводит список функций списком.

<div id="article">

<?php if(!isset($module))

echo "<p class=\"hello\">Добро пожаловать! <br /><br />

Вы находитесь на главной странице справочной системы по функциям PHP. Здесь вам доступна информация о функциях языка PHP. Выберите нужную вам категории в левом блоке, в полученном списке выберите нужную вам функцию и нажмите на нее для получения подробной информации. </p>";

else include_once "$path/view/$module" ?></div>

В блоке вывода основной информации размещена контракция if, которая проверяет переменную $module. Если данная переменная не установлена, то выводится стандартный текст приветствия. В противном случае будет подключен модуль задаваемые в контроллере.

<div id="footer"><p>&nbsp;Хмарный Богдан © 2016 <a href="mailto:bogdan.hmarnii@gmail.com">Обратная связь.</a></p></div>

</div>

</body>

Последним блочным элементом является подвал, в котором указан копирайт и форма обратной связи через почту. (Приложение 4).

Разберем подключаемое представление «sidebar.html.php». Данное представление подключает свою модель:

include_once "$path/model/category.inc.php";

Данная модель создаем массив «$category».

<ul>

<?php foreach($category as $cat):?>

<li class="sidebar"><?php echo "<a href=\"?cat=".$cat['id']."\">".$cat['title']."</a>" ;?></li>

<?php endforeach; ?>

</ul>

При помощи цикла foreach, вызывается создается список из каждой категории, каждый элемент является ссылкой с переменной «$_GET['cat']», которой присваивается id категории и которая при нажатии будет обработана контроллером и нужной моделью. (Приложение 5).

При выборе категории, будет подключена модель будет задана переменная «$model», это обеспечит подключение в блоке article представления «article.html.php». Данное представление подключает свою модель:

include_once "$path/model/function.inc.php";

Данная модель отвечает за создание массива $function.

<?php foreach($function as $fun):?>

<p><?php echo "<a href=\"?cat=".$id."&fun=".$fun['id']."\">".$fun['title']."</a> - ".$fun['description'];?></p>

<?php if(isset($fun['text'])) echo $fun['text'];?>

<?php endforeach; ?>

При помощи цикла foreach формируются на странице выводятся все функции выбранной категории. Выводится краткое описание и название функции, которое заключено в видео ссылки, при нажатии которой задается переменная «$_GET['fun']». При нажатии на нужную функцию вместо списка выводится полное описание выбранной функции. (Приложение 6).

Вывод массива с категориями в представление sidebar.hml.php осуществляется моделью category.inc.php. Данная модель в перву очередь подключает файл подключения к базе данных:

include_once "$path/core/db.inc.php";(Приложение 7).

Вывод массива с функциями в представление article.html.php осуществляется моделью function.inc.php. Данная модель в первую очередь проверяет не выбрана ли конкретная функция !isset($_GET['fun']) и является ли переменная $_GET['cat'] правильной.

if(!isset($_GET['fun']) and is_numeric($_GET['cat']) and strlen($_GET['cat']<100))

Если условие совпадает, то в переменную $id будет записан идентификатор выбранной категории, далее подключен файл подключения к базе данных.

$id=$_GET['cat'];

include_once "$path/core/db.inc.php";

После этого создается запрос, который выбирает функции по заданной категории $id. И записью результата в массив $function[]:

$sql="SELECT id,title,description FROM function where idcategory='$id'";

$result=$pdo->query($sql);

foreach($result as $row)

$function[]=array('id'=>$row['id'],'title'=>$row['title'],'description'=>$row['description']);

В противном случае будет проверена на соответствие переменная выбранной функции:

else if(is_numeric($_GET['fun']) and strlen($_GET['fun']<100)

Но на этот раз запрос SQL будет содержать и запрос на вывод поля 'text', а также запись этого поля в массив $function[];

$sql="SELECT id,title,description,text FROM function where id=$id";

$result=$pdo->query($sql);

foreach($result as $row)

$function[]=array('id'=>$row['id'],'title'=>$row['title'],'description'=>$row['description'], 'text'=>$row['text']);

Если переменные $_GET['cat'] и $_GET['fun'] не отвечают требования, то массив $function[] будет задан пустым, чтобы не вызывать код ошибки на сайте else $function[]=null;(Приложение 8).

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

#container{

width:98%;

height:90%;

margin-left: 0.5%;

position:absolute;

display: block;

}

#sidebar {

width: 20%;

height:95%;

float: left;

background-color: rgba(246,246,246,1.00);

}

#article {

width:79%;

height:95%;

float:right;

background-color: rgba(246,246,246,1.00);

}

Например, sidebar и article имеют процентное соотношение 20% /1% на полосу 79%. С размещением слева и справа соответственно. (Приложение 9).

2.3 Описание работы созданной системы

Созданная мною справочная система по функциям языка программирования PHP полностью готова к работе. Данная система расположена на локальном сервере Open Server с локальным доменом «b.php». Вся информация динамически выводится из базы данных MySQL. Окно с сайтом намеренно уменьшено, чтобы продемонстрировать растягиваемость шаблона. Выглядит данная система следующим образом:

В верхней части расположен заголовок с активной ссылкой на главную страницу. В левой части формируется список ссылок из категорий, каждой ссылке присваивается переменная «cat» с номером «id» соответствующей категории.

Когда пользователь выбирает функцию, то формируется URL запрос $_GET переменной ['cat'].

Благодаря этому в правой части от боковой панели, формируется ссылочный вывод функций данной категории с $_GET переменной ['fun'].

Модель «function.inc.php» обрабатывает URL запрос считывая значение переменной «$_GET['fun']» и выводит полное описание выбранной функции по ее идентификатору.

Заключение

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

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

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

В итоге была создана база данных для хранения категорий и самих функций. А также динамическая справочная система по стандартным функциям языка программирования PHP. Данная система определяет перемещение пользователя по сайту отслеживая изменения в URL и значения переменных $_GET['cat'] и $_GET['fun']. В зависимости от значений система определяет, какая выбрана категория и какая конкретно выбрана функция. В соответствии с этим система составляет запрос для базы данных и выводит результат обратно на сайт.

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

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

Библиография

  1. Официальное руководство по PHP URL: http://php.net/manual/ru/index.php
  2. Описание всех ф-ий от крупнейшего сообщества PHP программистов URL: http://www.php.su/functions/
  3. Бретт Маклафлин: PHP и MySQL Исчерпывающее руководство / Бретт Маклафлин: Изд-во «Питер» 2013. – 507 с.
  4. Кевин Янк: PHP и MySQL. От новичка к профессионалу / Кевин Янк: Изд-во «ЭКСМО», 2013. – 384 с.
  5. Джанет Валейд - PHP 5 для чайников / Джанет Валейд: Изд-во «Вальямс» 2006. – 318 с.
  6. Линн Бейли, Майкл Моррисон - Изучаем PHP и MySQL / Линн Бейли, Майкл Моррисон: Изд-во «ЭКСМО», 2010. – 718 с.
  7. Максим Кузнецов, Игорь Симдянов - Самоучитель PHP 5/6 (3-е издание) / Максим Кузнецов, Игорь Симдянов: Изд-во «БХВ-Петербург» 2009. – 664 с.
  8. Денис Колисниченко - PHP и MySQL. Разработка Web-приложений / Денис Колисниченко: Изд-во «БХВ-Петербург», 2013. – 543 с.
  9. Робин Никсон - Создаем динамические веб-сайты с помощью PHP / Робин Никсон: Изд-во «Питер» 2015. – 688 с.
  10. Котеров Д. В., Костарев А. Ф. - PHP 5. 2-е издание / Котеров Д. В., Костарев А. Ф.: Изд-во «БХВ-Петербург», 2008. – 1104 с.

Приложение 1

Создание и наполнение базы данных MySQL

CREATE DATABASE `phpdir`;

CREATE TABLE `category` (

`id` INT NOT NULL AUTO_INCREMENT,

`title` VARCHAR(100) NOT NULL,

PRIMARY KEY (`id`))

ENGINE = InnoDB CHARSET utf8;

INSERT INTO `category` (title) VALUES ('Функции для работы со строками'),('Функции для работы с массивами'),('Математические функции'), ('Функции для работы с файлами'), ('Функции для работы с каталогами'), ('Функции для работы с СУБД'),('Функции регулярных выражений'),('Сетевые функции');

CREATE TABLE `function` (

`id` INT NOT NULL AUTO_INCREMENT,

`idcategory` INT NULL,

`title` VARCHAR(100) NOT NULL,

`description` VARCHAR(255) NOT NULL,

`text` TEXT NULL,

PRIMARY KEY (`id`))

ENGINE = InnoDB CHARSET utf8;

INSERT INTO `category` (title) VALUES ('Функции для работы со строками'),('Функции для работы с массивами'),('Математические функции'), ('Функции для работы с файлами'), ('Функции для работы с каталогами'), ('Функции для работы с СУБД'),('Функции регулярных выражений'),('Сетевые функции');

CREATE TABLE `function` (

`id` INT NOT NULL AUTO_INCREMENT,

`idcategory` INT NULL,

`title` VARCHAR(100) NOT NULL,

`description` VARCHAR(255) NOT NULL,

`text` TEXT NULL,

PRIMARY KEY (`id`))

ENGINE = InnoDB CHARSET utf8;

INSERT INTO `function` (idcategory, title, description, text) VALUES

('1','explode','Разбивает строку на подстроки, 'array <B>explode</B> ( string separator, string string [, int limit] )<BR ></BR>

<P>Возвращает массив строк, полученных разбиением строки

<VAR>string</VAR> с использованием

<VAR>separator</VAR> в качестве разделителя.

Если передан аргумент <VAR>limit</VAR> передан,

массив будет содержать максимум <VAR>limit</VAR>

элементов, при этом последний элемент будет содержать остаток строки

<VAR>string</VAR>.

</P>

<P>Если <VAR>separator</VAR> - пустая строка (""),

<B>explode()</B> возвращает <TT><B>FALSE</B></TT>. Если

<VAR>separator</VAR> не содержится в <VAR>string</VAR>,

то <B>explode()</B> возвращает массив, содержащий один

элемент <VAR>string</VAR>.

</P>

<P>По историческим причинам, функции <B>implode()</B> можно

передавать аргументы в любом порядке, но для

<B>explode()</B> это недопустимо. <VAR>separator</VAR>

всегда должен содержать разделитель, а <VAR>string</VAR>

- исходную строку.

</P>'),

('1','print','Выводит строку','int <B>print</B> ( string arg )<BR ></BR><P>Выводит <VAR>arg</VAR>. Всегда возвращает

<VAR>1</VAR></P><P><B>print()</B> не является "настоящей" функцией (это конструкция языка) поэтому заключать аргумент в скобки не обязательно.</P>'),

('1','strlen','Возвращает длину строки','int <B>strlen</B> ( string string )<BR ></BR>

<P>Возвращает длину строки <VAR>string</VAR></P>'),

('2','current','Возвратить текущий элемент массива','mixed <B>current</B> ( array &#38;array )<BR></BR>

<P>У каждого массива имеется внутренний указатель на его "текущий" элемент, который инициализирован первым элементом, добавленным в массив.</P>

<P>Функция <B>current()</B>просто возвращает значение элемента массива, на который указывает его внутренний указатель.Она не перемещает указатель куда бы то ни было.

Если внутренний указатель за пределами списка элементов,<B>current()</B> возвращает <TT><B>FALSE</B></TT>.'),

('2','rsort','Отсортировать массив в обратном порядке','bool <B>rsort</B> ( array &#38;array [, int sort_flags] )<BR ></BR>

<P>Эта функция сортирует массив в обратном порядке (от большего к меньшему).</P>

<P>Возвращает <TT><B>TRUE</B></TT> в случае успешного завершения или <TT><B>FALSE</B></TT> в случае возникновения ошибки.</P>'),

('2','asort','Отсортировать массив, сохраняя ключи','bool <B>asort</B> ( array &#38;array [, int sort_flags] )<BR ></BR><P>Эта функция сортирует массив таким образом, что сохраняются отношения между

ключами и значениями. Она полезна, в основном, при сортировке ассоциативных массивов, когда важно сохранить отношение ключ =&#62; значение.</P>

<P>Возвращает <TT><B>TRUE</B></TT> в случае успешного завершения или <TT><B>FALSE</B></TT> в случае возникновения ошибки.</P>'),

('3','abs','Модуль числа','number <B>abs</B> ( mixed number )<BR /><BR/>

<P>Возвращает абсолютное значение <VAR>number</VAR>. Если <VAR>number</VAR> имеет тип <B>float</B>, возвращаемое значение также будет иметь тип

<B>float</B>, иначе - <B>integer</B>.</P>'),

('3','cos ','Косинус','<p>float <B>cos</B> ( float arg)</p>

<P><B>cos()</B> возвращает косинус параметра <TT><I>arg</I></TT>.

Параметр <TT><I>arg</I></TT> задан в радианах.</P>'),

('3','sqrt','Вычисляет квадратный корень числа','<p>float <B>sqrt</B> (float arg)</p>

<P> Возвращает квадратный корень аргумента <TT><I>arg</I></TT>.'),

('4','basename','Возвращает имя файла из указанного пути','string <B>basename</B> ( string path [, string suffix] )<BR ></BR><P>Эта функция вернет имя файла, чей путь был передан в качестве параметра. Если имя файла оканчивается на

<VAR>suffix</VAR>, он также будет отброшен.</P><P>На платформах Windows в качестве разделителей имен директорий используются оба слэша (прямой <VAR>/</VAR> и обратный<VAR>\</VAR>).

В других операционных системах разделителемслужит прямой слэш (<VAR>/</VAR>).</P>'),

('4','copy','Копирует файл','bool <B>copy</B> ( string source, string dest )<BR ></BR><P>Создает копию файла, чье имя передано в параметре <VAR>source</VAR>, в файле с именем <VAR>dest</VAR>.

Возвращает <TT><B>TRUE</B></TT> в случае успешного завершения или <TT><B>FALSE</B></TT> в случае возникновения ошибки.</P>'),

('4','unlink','Удаляет файл','bool <B>unlink</B> ( string filename [, resource context] )<BR ></BR><P>&#13; Удаляет файл <VAR>filename</VAR>. Функция похожа на функцию unlink() Unix C. Возвращает <TT><B>TRUE</B>

</TT> в случае успешного завершения или <TT><B>FALSE</B></TT> в случае возникновения ошибки.</P>'),

('5','chdir','Сменить каталог','bool <B>chdir</B> ( string directory )<BR></BR><P>Изменяет текущий каталог PHP на указанный в качестве параметра <VAR>каталог</VAR>.

Возвращает <TT><B>TRUE</B></TT> в случае успешного завершения или <TT><B>FALSE</B></TT> в случае возникновения ошибки.</P>'),

('5','chroot','Сменить корневой каталог','bool <B>chroot</B> ( string directory )<BR></BR><P>Изменяет корневой каталог текущего процесса на переданный в качестве параметра <VAR>каталог</VAR>.

Возвращает <TT><B>TRUE</B></TT> в случае успешного завершения или <TT><B>FALSE</B></TT> в случае возникновения ошибки.</P>

'),

('5','closedir','Освободить дескриптор каталога','void <B>closedir</B> ( resource dir_handle )<BR ></BR><P>Закрывает поток, связанный с каталогом и переданный в качестве параметра <VAR>дескриптор_каталога</VAR>.

Перед использованием данной функции, поток должен быть открыт с помощью функции <B>opendir()</B>.</P>'),

('6','mysql_connect','Открывает соединение с сервером MySQL','resource <B>mysql_connect</B> ( [string server [, string username [, string password [, bool new_link [, int client_flags]]]]] )<BR ></BR>

<P>Возвращает указатель на соединение с MySQL в случае успешного выполнения, или <TT><B>FALSE</B></TT> при неудаче.</P>

<P><B>mysql_connect()</B> устанавливает соединение с сервером MySQL. Следующие значения по умолчанию установлены для отсутствующих параметров: <VAR>server</VAR> = "localhost:3306", <VAR>username</VAR> = имя пользователя

владельца процесса сервера и <VAR>password</VAR> = пустой пароль.</P><P>Параметр <VAR>server</VAR> может также включать номер порта, к примеру "hostname:port" или путь к сокету, к примеру ":/path/to/socket" для локального сервера.'),

('6','mysql_close','Закрывает соединение с сервером MySQL','bool <B>mysql_close</B> ( [resource link_identifier] )<BR></BR><P>Возвращает <TT><B>TRUE</B></TT> в случае успешного завершения или <TT><B>FALSE</B></TT> в случае возникновения ошибки.</P>

<P><B>mysql_close()</B> закрывает соедиение с базой данных MySQL, на которое указывает переданный указатель. Если параметр <VAR>link_identifier</VAR> не указан,закрывается последнее открытое (текущее) соединение.</P>

<P>Использование <B>mysql_close()</B> не необходимо для непостоянных соединений. Они автоматически закрываются в конце скрипта.</P>'),

('6','mysql_error','Возвращает строку ошибки последней операции с MySQL','string <B>mysql_error</B> ( [resource link_identifier] )<BR></BR><P>Возвращает строку, содержащую текст ошибки выполнения последней функции MySQL, или <VAR>''</VAR>

(пустая строка) если операция выполнена успешно. Если в функцию не передан параметр ссылки на соединение, последнее открытое соединение будет использовано.</P>'),

('7','preg_grep','Возвращает массив вхождений, которые соответствуют шаблону','array <B>preg_grep</B> ( string pattern, array input [, int flags] )<BR></BR><P><B>preg_grep()</B> возвращает массив, состоящий из элементов входящего массива <VAR>input</VAR>, которые соответствуют заданному шаблону <VAR>pattern</VAR>.</P>

<P>Параметр <VAR>flags</VAR> может принимать следующие значения:<P></P><DL><DT>PREG_GREP_INVERT</DT><DD>

<P>В случае, если этот флаг установлен, функция <B>preg_grep()</B>, возвращает те элементы массива, которые <SPAN><I>не соответствуют</I>

заданному шаблону <VAR>pattern</VAR>. Этот флаг доступен, начиная с <VAR>PHP</VAR> 4.2.0.</P></DD></DL>'),

('7','preg_quote','Экранирует символы в регулярных выражениях','string <B>preg_quote</B> ( string str [, string delimiter] )<BR></BR><P>Функция <B>preg_quote()</B> принимает строку <VAR>str</VAR>

и добавляет обратный слеш перед каждым служебным символом. Это бывает полезно, если в составлении шаблона участвуют строковые переменные, значение которых в процессе работы скрипта может меняться.</P>

<P>В случае, если дополнительный параметр <VAR>delimiter</VAR> указан, он будет также экранироваться. Это удобно для экранирования ограничителя,

который используется в PCRE функциях. Наиболее распространенным ограничителем является символ '/'.</P><P>В регулярных выражениях служебными считаются следующие символы:

<VAR>. \\ + * ? [ ^ ] $ ( ) { } = ! &#60; &#62; | :</VAR></P>'),

('7','preg_replace_callback','Выполняет поиск по регулярному выражению и замену с использованием функции обратного вызова','mixed <B>preg_replace_callback</B> ( mixed pattern, callback callback, mixed subject [, int limit] )<BR></BR><P>Поведение этой функции во многом напоминает

<B>preg_replace()</B>, за исключением того, что вместо параметра <VAR>replacement</VAR> необходимо указывать <VAR>callback</VAR> функцию, которой в качестве

входящего параметра передается массив найденных вхождений. Ожидаемый результат - строка, которой будет произведена замена.</P>'),

('8','ftp_connect','Устанавливает соединение с FTP сервером','resource <B>ftp_connect</B> ( string host [, int port [, int timeout]] )<BR></BR><P><B>ftp_connect()</B> устанавливает FTP соединение с указанным сервером <VAR>host</VAR>.</P>'),

('8','ftp_close','Закрывает соединение с FTP сервером','bool <B>ftp_close</B> ( resource ftp_stream )<BR></BR><P><B>ftp_close()</B> закрывает указанный идентификатор соединения с сервером и освобождает <B>resource</B>.</P>

'),

('8','ftp_delete','Удаляет файл на FTP сервере','bool <B>ftp_delete</B> ( resource ftp_stream, string path )<BR></BR><P><B>ftp_delete()</B> удаляет файл, заданный аргументом <VAR>path</VAR>, с FTP сервера.</P>');

Приложение 2

index.php

<?php

$path=$_SERVER['DOCUMENT_ROOT'];

if(isset($_GET['cat']))

{

$module="article.html.php";

}

include_once "$path/view/main.html.php";

?>

Приложение 3

db.inc.php

<?php

$path=$_SERVER['DOCUMENT_ROOT'];

try{

$pdo=new PDO('mysql:host=localhost;dbname=phpdir','root','');

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$pdo->exec('SET NAMES UTF8');

}

catch (PDOException $e)

{

$error = $e->getMessage();

echo $error;

exit();

}

?>

Приложение 4

main.html.php

<html lang="ru">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<title>Справочная система по функциям PHP</title>

<link href="/css/style.css" type="text/css" rel="stylesheet" />

</head>

<body>

<div id="container">

<div id="header"><p><a href="/">Справочная система по функциям PHP</a><p></div>

<div id="sidebar"><?php include_once "$path/view/sidebar.html.php";?></div>

<div id="article">

<?php if(!isset($module))

echo "<p class=\"hello\">Добро пожаловать! <br /><br />

Вы находитесь на главной странице справочной системы по функциям PHP. Здесь вам доступна информация

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

вам функцию и нажмите на нее для получения подробной информации.</p>";

else include_once "$path/view/$module" ?></div>

<div id="footer"><p>&nbsp;Хмарный Богдан © 2016 <a href="mailto:bogdan.hmarnii@gmail.com">Обратная связь.</a></p></div>

</div>

</body>

Приложение 5

sidebar.html.php

<?php include_once "$path/model/category.inc.php";?>

<ul>

<?php foreach($category as $cat):?>

<li class="sidebar"><?php echo "<a href=\"?cat=".$cat['id']."\">".$cat['title']."</a>" ;?></li>

<?php endforeach; ?>

</ul>

Приложение 6

article.html.php

<?php include_once "$path/model/function.inc.php";?>

<?php foreach($function as $fun):?>

<p><?php echo "<a href=\"?cat=".$id."&fun=".$fun['id']."\">".$fun['title']."</a> - ".$fun['description'];?></p>

<?php if(isset($fun['text'])) echo $fun['text'];?>

<?php endforeach; ?>

Приложение 7

category.inc.php

<?php

include_once "$path/core/db.inc.php";

$sql="SELECT * FROM category";

$result=$pdo->query($sql);

foreach($result as $row)

$category[]=array('id'=>$row['id'],'title'=> $row['title']);

?>

Приложение 8

function.inc.php

<?php

if(!isset($_GET['fun']) and is_numeric($_GET['cat']) and strlen($_GET['cat']<100))

{

$id=$_GET['cat'];

include_once "$path/core/db.inc.php";

$sql="SELECT id,title,description FROM function where idcategory='$id'";

$result=$pdo->query($sql);

foreach($result as $row)

$function[]=array('id'=>$row['id'],'title'=> $row['title'], 'description'=>$row['description']);

}

else if(is_numeric($_GET['fun']) and strlen($_GET['fun']<100) )

{

$id=$_GET['fun'];

include_once "$path/core/db.inc.php";

$sql="SELECT id,title,description,text FROM function where id=$id";

$result=$pdo->query($sql);

foreach($result as $row)

$function[]=array('id'=>$row['id'],'title'=> $row['title'], 'description'=>$row['description'], 'text'=>$row['text']);

}

else

$function[]=null;

?>

Приложение 9

style.css

#container{

width:98%;

height:90%;

margin-left: 0.5%;

position:absolute;

display: block;

}

#header {

width:100%;

height:80px;

float:left;

position:relative;

background-color: rgba(208,207,207,1.00);

}

#header p {

text-align:center;

vertical-align:middle;

font-weight: 600;

font-size: 18pt;

}

#header a{

color: #000000;

text-decoration: none;

}

#sidebar {

width: 20%;

height:95%;

float: left;

background-color: rgba(246,246,246,1.00);

}

.sidebar {

list-style-type: circle;

}

.sidebar a{

text-decoration:none;

}

#article {

width:79%;

height:95%;

float:right;

background-color: rgba(246,246,246,1.00);

}

.hello{

text-align: center;

margin: 2% 20% 0 20%;

font-size:14pt;

}

#article p{

margin:1% 0 0 2%;

}

#footer{

width:100%;

height:5%;

float:left;

background-color: rgba(208,207,207,1.00);

}

#footer a{

float:right;

}

  1. Официальная документация — Предисловие http://php.net/manual/ru/preface.php

  2. Максим Кузнецов, Игорь Симдянов - Самоучитель PHP 5/6 (3-е издание) – С.3-5

  3. Бретт Маклафлин: PHP и MySQL Исчерпывающее руководство / Бретт Маклафлин: Изд-во «Питер» 2013. - С.26

  4. Джанет Валейд - PHP 5 для чайников / Джанет Валейд: Изд-во «Вальямс» 2006 – С.21-22

  5. Максим Кузнецов, Игорь Симдянов - Самоучитель PHP 5/6 (3-е издание) – С.5

  6. Котеров Д. В., Костарев А. Ф. - PHP 5. 2-е издание / Котеров Д. В., Костарев А. Ф.: Изд-во «БХВ-Петербург», 2008. – С.157

  7. Робин Никсон - Создаем динамические веб-сайты с помощью PHP / Робин Никсон: Изд-во «Питер» 2015. - С. 123

  8. Котеров Д. В., Костарев А. Ф. - PHP 5. 2-е издание / Котеров Д. В., Костарев А. Ф.: Изд-во «БХВ-Петербург», 2008. . - С. 237

  9. Официальная документация — Встроенные функции http://php.net/manual/ru/functions.internal.php.

  10. Категории стандартных функций PHP http://www.php.su/functions/?page=standard

  11. Денис Колисниченко - PHP и MySQL. Разработка Web-п-ий/ Денис Колисниченко: Изд-во «БХВ-Петербург», 2013. – С. 125

  12. Линн Бейли, Майкл Моррисон - Изучаем PHP и MySQL / Линн Бейли, Майкл Моррисон: Изд-во «ЭКСМО», 2010. - С. 556

  13. Кевин Янк: PHP и MySQL. От новичка к профессионалу / Кевин Янк: Изд-во «ЭКСМО», 2013. – С.91-92

  14. Описание термина «Справочная система» https://ru.wikipedia.org/wiki/Справочная_система

  15. Open Server http://open-server.ru/

  16. Notepad++ https://notepad-plus-plus.org/

  17. MySQL Workbench https://ru.wikipedia.org/wiki/MySQL_Workbench