Главная страница
Навигация по странице:

  • Начните вводить слово в поле ввода ниже

  • Person info will be listed here.

  • мдкконспекты. Пространства имен


    Скачать 1.94 Mb.
    НазваниеПространства имен
    Дата09.11.2022
    Размер1.94 Mb.
    Формат файлаdocx
    Имя файламдкконспекты.docx
    ТипДокументы
    #778462

    Пространство имен в 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 "













    ";

    while($row = mysqli_fetch_array($result)) {

    echo "";

    echo "";

    echo "";

    echo "";

    echo "";

    echo "";

    echo "";

    }

    echo "
    FirstnameLastnameAgeHometownJob
    " . $row['firstname'] . "" . $row['lastname'] . "" . $row['age'] . "" . $row['hometown'] . "" . $row['job'] . "
    ";

    mysqli_close($con);

    ?>





    header





    {{ content }}





    footer





    написать администратору сайта