мдкконспекты. Пространства имен
Скачать 1.94 Mb.
|
Пространство имен в Php Работая со сложными сценариями, может возникнуть ситуация, когда при инициализации переменной или функции возникает непреднамеренное дублирование имен, что нарушит ход компиляции скрипта и выдаст ошибку. Для избавления от таких ошибок используют пространство имен. Пространства имен — это квалификаторы, которые решают две разные проблемы: Позволяют использовать одно и то же имя для более чем одного класса и предотвратить конфликт имен между кодами . Пространства имен могут сделать наш код более организованным, группируя классы, которые работают вместе для выполнения задачи. Концепция определения и вызова пространств имен аналогична обычной файловой структуре в операционной системе. Представим, что пространства имен — это папки, а файлы — классы, тогда: В папке /base/math может быть несколько файлов: numbers.php, calcul.php и так далее. Но не может быть двух файлов с одинаковым именем. Для доступа к numbers.php из файла calcul.php, вы можете напрямую обратиться к numbers.php В папке /base/mechanic лежат файлы: physics.php, electro.php и т.д. И здесь же может лежать файл numbers.php. Внутри папки /mechanic для доступа к numbers.php нужно будете ссылаться /base/mechanic/numbers.php Внутри папки /mechanic, если нам необходимо сослаться на файл numbers.php,в папке /base/ math, нам нужно будет использовать /base/math/numbers.php Точно так же работает пространства имен. Пространство имён задается с помощью ключевого слова namespace, за которым следует название: namespace должна прописываться в первой строке сценария сразу после Если мы добавляем объявление пространства имен в начало файла PHP, все классы, функции и константы будут элементами этого пространства имен. Пример Создадим файл с именем Math.php и добавим следующий код: Создадим еще один файл с именем usage.php и получим доступ к элементам указанного выше пространства имен Math. Символ \ используется для перехода на уровень ниже в пространствах имен. Когда одновременно используются несколько классов из одного и того же пространства имен, проще использовать ключевое слово namespace, чтобы не прописывать каждый раз квалификатор Math\. Перепишем код: В операционной системе папки внутри могут содержать другие папки. Таким же образом пространства имен могут содержать пространства имен. Они называются подпространствами имен. например namespace Math\Geometry; Создадим пространство имен с именем Math, добавим в него подпространства имен и классы. Структура проекта будет такой /src /Math /Geometry Circle.php Constants.php Далее напишем код: В файле Circle.php мы прописали \Math\Constants::PI ссылаясь на константу в файле Constants.php. Это потому, что сценарий PHP выполняется всегда относительно текущего пространства имен. Когда пространство имен начинается с обратной косой черты ( \ ), то путь к имени элемента будет исчисляться относительно глобального пространства имен. Используем все наши классы в файле index.php, который должен находиться в корневой папке вашего проекта: Файл index.php автоматически будет находиться в глобальном пространстве имен так как мы не указали для него не одного из пространств имен. Если в проекте предусмотрена иерархия пространств имен, можно импортировать любое пространство имен в тот или иной файл, используя ключевое слово use. Если добавить следующий код в свой index.php, класс Math\Geometry\Circle будет импортирован в текущую область: Можно импортировать как пространства имен, так и классы: Может быть полезно присвоить пространству имен или классу псевдоним: Если у вас уже есть класс с таким же именем, как у импортируемого класса Когда вам нужно более удобное (или простое) имя для импортируемого класса Такое присвоение осауществляется с помощью ключевого слова use: Присвоим псевдониму Circ классу Circle. Аналогично можно присвоить псевдоним пространству имен. Json в php JSON расшифровывается как аббревиатура от J ava S cript O bject N otation. JSON — это стандартный текстовый формат обмена данными, основанный на JavaScript, который представляет собой набор пар {ключ: значение}. В JSON, ключи всегда строки, в то время как значение может быть string, number, true или false, null, object или array. Строки должны быть заключены в двойные кавычки "и могут содержать управляющие символы, такие как \n, \t и \. JSON более компактный, чем xml, поэтому он более предпочтителен для обмена данными между веб-браузером и сервером. Объект JSON может выглядеть так: Массив JSON будет выглядеть примерно так: Структуры данных JSON очень похожи на массивы PHP. В языке PHP существуют специальные функции для кодирования и декодирования данных JSON. Это функции json_encode() и json_decode() соответственно. Они уже встроены в ядро PHP, поэтому никаких библиотек подключать не нужно. Обе функции работают только со строковыми данными в кодировке UTF-8.в Кодирование данных Json Кодируемое значение может быть любым типом данных PHP, кроме ресурса, такого как база данных или дескриптор файла. string json_encode ($value [, int $options = 0 [, int $depth = 512 ]] ) Как кодировать ассоциативный массив PHP в объект JSON: Посмотрим, как будут кодироваться кириллические символы: Как видно кириллица кодируется, исправляется это добавлением опции: JSON_UNESCAPED_UNICODE Если применить параметр JSON_FORCE_OBJECT, то функция json_encode() будет возвращать индексированный массив PHP как объект JSON: Неассоциативный массив может быть закодирован как массив или объект. Однако ассоциативный массив всегда кодируется как объект. Декодирование данных Jason Функция Json_decode() возвращает значение, декодированное из Json в соответствующий тип данных PHP. Синтаксис mixed json_decode ( string $json [, bool $assoc = false [, int $depth = 512 [, int $options = 0 ]]] ) Преобразуем объект JSON в объект PHP: Функция json_decode() по умолчанию возвращает объект. Если нужно JSON декодировать в ассоциативный массив, то в качестве параметра $assoc нужно указать true. Пример Декодируем данные JSON и получим доступ к отдельным элементам объекта JSON в PHP: Получить доступ к отдельным элементам ассоциативного массива PHP: Переберем декодированные данные с помощью цикла foreach() Объекты и массивы JSON также могут быть вложенными. Объект JSON может содержать другие объекты JSON, массивы, вложенные массивы, массивы объектов JSON и т.д. Декодируем вложенный объект JSON и переведем все его значения в PHP: jason.decode возвращает null если в коде есть ошибки $json = '{"1:"Значение 1"}'; $array = json_decode($json, true); switch (json_last_error()) { case JSON_ERROR_NONE: echo 'Ошибок нет'; break; case JSON_ERROR_DEPTH: echo 'Достигнута максимальная глубина стека'; break; case JSON_ERROR_STATE_MISMATCH: echo 'Некорректные разряды или несоответствие режимов'; break; case JSON_ERROR_CTRL_CHAR: echo 'Некорректный управляющий символ'; break; case JSON_ERROR_SYNTAX: echo 'Синтаксическая ошибка, некорректный JSON'; break; case JSON_ERROR_UTF8: echo 'Некорректные символы UTF-8, возможно неверно закодирован'; break; default: echo 'Неизвестная ошибка'; break; } Ajax Ajax означает асинхронный JavaScript и XML. Это технология, которая сокращает взаимодействие между сервером и клиентом. Это достигается путем обновления только части веб-страницы, а не всей страницы. Асинхронное взаимодействие инициируется JavaScript. Цель AJAX — это обмен небольшими объемами данных с сервером без обновления страницы. Асинхронные запросы меньше нагружают ЦП и он большую часть времени остается в ожидании. Для реализации Ajax нужно знать об объекте XMLHttpRequest.Это объект используемый для обмена данными с сервером за кулисами. Он используется для вызова методов, обеспечивающих эффективное взаимодействие. Все современные браузеры поддерживают объект XMLHttpRequest. Процесс обмена данными между клиентом и сервером Процесс работы Ajax можно разбить на следующие шаги: Пользователь запускает событие, например, отпуская клавишу при вводе пароля. Это приводит к вызову функции JavaScript, которая инициализирует объект XMLHttpRequest. Объект XMLHttpRequest настроен с учетом параметра запроса, который включает в себя идентификатор элемента управления, инициировавшего событие, и любое значение, введенное пользователем. Затем объект XMLHttpRequest выполняет асинхронный запрос к веб-серверу. На веб-сервере запрос обрабатывает такой объект, как servlet или слушатель. Данные извлекаются из хранилища данных, и готовится ответ, содержащий данные в форме XML-документа. Объект XMLHttpRequest получает данные XML с помощью функции обратного вызова, обрабатывает их и обновляет HTML DOM (объектную модель документа) для отображения страницы, содержащей новые данные. Ajax является технологией веб-браузера который не зависит от ПО веб-сервера. Ajax основан на открытых стандартах. Технологию Ajax можно использовать для создания приложений с большими интерактивными возможностями. Пример создадим поле ввода в которое можно ввести любое из слов JS,php,MySQL,SQL,PostgreSQL,css,html5,css3,json,python.Как только начнем вводить текст можно увидеть,что некоторый связанный текст отображается ниже. Этот текст хранится в файле PHP. И все это происходит без перезагрузки страницы. Начните вводить слово в поле ввода ниже: Предложения: Person info will be listed here. $q = intval($_GET['q']); mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); $con = mysqli_connect('localhost','root','','demo'); if (!$con) { die('Ошибка подключения: ' . mysqli_error($con)); } mysqli_select_db($con,"demo"); $sql="SELECT * FROM ajax_demo WHERE id = '".$q."'"; $result = mysqli_query($con,$sql); echo "
mysqli_close($con); ?> header {{ content }} footer |