PHP.SU – Экзамен 200-100 Zend Certified PHP Engineer

Строки — основы

  • выделяются одинарными или двойными кавычками
  • двойные кавычки применяются в случае парсинга переменных или использования специальных символов (n). На скорость обработки данных не влияет
  • strlen($string) — возвращает длину строки, а именно количество байт, а не символов
  • str_word_count($string, $format, $charlist) — возвращает количество слов, $format (0 — возврат количества слов, 1 — массив из всех слов, 2 — ассоциативный массив, где в качестве ключей — положение в строке (индекс)), $charlist — список символов, из которых может состоять слово (то есть 3 — слово fri3nd будет посчитано).
  • count_chars($string, 1) — считает количество вхождений символов, 1 — режим, возвращает массив со всеми символами (0 — возвращает символы, не входящие в строку).
  • soundex($string) // высчитывает soundex ключ строки (строка длинной в 4 символа, начинающаяся с буквы), для поиска по произношению, например, soundex(“Euler”) == soundex(“Ellery”); // E460
  • metaphone($string, $phonemes) — высчитывает metaphone ключ для строки (является более точным сравнением чем soundex(), так как в ней учитываются правила произношения в английском языке, сгенерированные ключи разной длины), $phonemes ограничивает список возвращаемых символов.
  • trim($string, $optional_char_list) — убирает пробелы из начала и окончания строки (space/tab/newline); если задан $optional_char_list, то указанные символы так же удаляются.
  • ltrim($string, $optional_char_list) — удаляет пробелы из начала строки.
  • rtrim($string, $optional_char_list) — аналог chop(), удаляет пробелы с конца строки.

Тест по основам php

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

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

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

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

Если программист хочет устроиться на работу по специальности, прохождение тестирования станет его преимуществом среди других кандидатов на должность.

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

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

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

Поэтому прохождение PHP тестирования поможет в решении многих вопросов и придаст дополнительную уверенность кандидату при прохождении собеседования.

Источник

Какие же аспекты программирования на php положены в основу тестового
экзамена?

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

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

1. Основы PHPОсновная информация о PHP
и его роли в разработке веб-приложений. Все основные элементы языка, такие
как – определения, соглашения, основные элементы языка PHP и их
использование.- введение в PHP- PHP и HTML- PHP и XML- PHP и базы данных- создание PHP
страниц- использование PHP тегов- основы
использования языка- константы и переменные-
идентификаторы- операторы- условные
конструкции- операторы циклов- функции-
переменные функции- включение файлов

2. Объектно-ориентированное программирование на
PHPВсе об объектно-ориентированном программировании на PHP
(обратите внимание, материалы экзамена опираются на версию PHP
4.3.6, таким образом имеется ввиду не ООП, которое пришло в PHP 5
версии, а еще раннее ООП, версии 4).- основы
объектно-ориентированного программирования- классы-
создание экземпляров объектов- конструкторы-
атрибуты- доступ к объектам, методам и атрибутам-
наследование3.

PHP и
WebВ основном в этом блоке вопросы по супермассивам PHP и
сессиям. – создание HTML разметки с помощью PHP- встраивание PHP сценариев в HTML на клиентской и серверной
стороне- создание форм- GET и POST: специфика
получения данных из форм- cookies- супермассивы:
получение глобальной информации- управление сессиями

4. МассивыМассивы и их использование в
PHP.- индексные массивы- ассоциативные
массивы- многомерные массивы- сортировка-
изменение порядка следования элементов в массивах-
сериализация- манипулирование массивами

  5. Строки и регулярные выражения  –
форматирование строк – сравнение строк-
модифицирование строки- регулярные выражения-
выборка данных из строки- объединение данных в строку

  6. Манипуляция файлами  – открытие
файлов- запись в файл- чтение из файла-
закрытие файла- работа с файловой системой-
блокирование файла

7. Дата и времяОсновные встроенные в PHP
функции для работы с датой и временем, специфика работы с датами при
работе с базами данных, особенности и ограничения формата времени
UNIX.- даты в PHP- получение текущей даты- конвертирование в формат даты- основные функции даты и
времени- вычисление даты- дата и базы
данных- использование календарных функций- эпоха
UNIX – ограничения использования формата даты UNIX

  8. Работа с E-mail  – отсылка
email- управление заголовками- форматирование
сообщений email- присоединение файла к сообщению

9. PHP и базы данныхОсновы взаимодействия
PHP и серверов данных. Поскольку экзамен сфокусирован только на PHP,
вопросы касаются не конкретных DBMS, а только общих моментов работы с
базами данных, SQL синтаксиса.- использование баз
данных- типы баз данных, поддерживаемых в PHP-
вставка данных- получение данных- объединение
данных

  10. Потоки и сетевое программирование 
– использование файловых трансляторов (wrappers)- соединение с
удаленными узлами через сокеты- блокирование и не блокирование
вызовов- создание и использование потоков

11. БезопасностьНекоторые традиционные
вопросы безопасности, имеющие место при программировании на PHP.- безопасная и небезопасная входная информация (trusted and untrusted
input) – управление аутентификацией- замена опасных
символов для строк, использующихся при shell программировании и работе с базами данных- проверка правильности
пользовательского ввода – предотвращение XSS атак

12. Отладка и управление
производительностью  – основные ошибки при
программировании на PHP- программная логика-
создание хорошего кода- предотвращение ошибок-
предотвращение потери производительности- решение проблем
низкой производительности

Программист PHP – GeekBrains

Программист PHP – это 4 месяца обучения с нуля основам разработки. После того как студенты завершат свое обучение на курсе, они могут претендовать на должности в IT-компании и начать успешную карьеру.

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

Содержание онлайн-программы:PHP.SU - Экзамен 200-100 Zend Certified PHP Engineer

  1. установка и настройка, основы работы, понятия, базовые операции в Git;
  2. основы, термины и понятия программирования;
  3. разработка алгоритмов;
  4. редактор кода;
  5. алгоритмы и блок-схемы;
  6. HTML и CSS;
  7. установка и развертывание веб-сервера;
  8. создание веб-страниц;
  9. типы данных;
  10. создание макета интернет-магазина;
  11. знакомство с CSS;
  12. оформление шаблона;
  13. работа с массивами данных;
  14. навигация между страницами;
  15. размещение сайта в интернете;
  16. понятия в веб-разработке;
  17. HTML-документ;
  18. виды и атрибуты тегов;
  19. псевдоклассы и псевдоэлементы;
  20. позиционирование;
  21. работа с Flexbox;
  22. работа с Figma;
  23. адаптивность сайта;
  24. кроссбраузерность;
  25. установка СУБД;
  26. SQL-команды;
  27. операторы;
  28. работа веб-серверов;
  29. интерактивность;
  30. авторизация и аутентификация;
  31. ООП в PHP-разработке;
  32. шаблонизаторы;
  33. установка и принципы работы Laravel;
  34. роутинг.

PHP.SU - Экзамен 200-100 Zend Certified PHP EngineerПреимущества:

  1. Гарантированная поддержка наставника.
  2. Живое общение преподавателей со студентами посредством онлайн-трансляций.
  3. Обучение с нуля.
  4. Возможность стажировки в GeekBrains.
  5. Получение удостоверения и электронного сертификата.

Стоимость одним платежом – 50 000 руб., в рассрочку – 1 388 руб. в месяц.

Про сертификаты:  Как оформить сертификат на газонокосилку- получите консультацию экспертов

Предлагаем ознакомиться и с другими онлайн-программами от GeekBrains:

PHP. Уровень 1

. «Уроки PHP» от iTDoctor

Пройти курс

Кому подойдёт: тем, кто хочет изучить все правила и особенности работы с языком программирования PHP.

Длительность: 55 уроков (около 8 часов).

Сертификат: не выдаётся.

Формат обучения: видеоуроки.

Программа: на курсе разбираются следующие темы:

  • Первый скрипт и конец строки.
  • Подключение файлов.
  • Типы данных и непостоянные.
  • Целые и вещественные числа.
  • Явное и неявное приведение типов.
  • ООП, классы и объекты.
  • Константы и конкатенация строк.
  • Различные виды операторов и их применение.
  • Виды циклов и их использование.
  • Различных видов массивов.
  • Слияние и сравнение массивов.
  • Вложенные и анонимные функции.
  • Методы отправки параметров.
  • Загрузка файлов на сервер.
  • Формы обратной связи и отправка письма на почту.
  • Классы и методы.

Что узнаете:

  • Как создавать сайты с нуля с помощью PHP.
  • Какие существуют типы данных.
  • Как округлять числа.
  • Что такое арифметические и поразрядные операторы.
  • Что такое интерполяция массивов.
  • Как проверять и удалять элементы массивов.

Преимущества курса:

. «Уроки PHP 7» от Web Developer Blog

Пройти курс

Кому подойдёт: новичкам, которые только начинают свой путь в веб-разработке.

Длительность: 32 урока.

Сертификат: не выдаётся.

Формат обучения: видеоуроки.

Программа: на курсе разбираются следующие темы:

  • Установка IDE.
  • Переменные, постоянные и типы данных.
  • Для чего нужны операции со строками.
  • Виды циклов.
  • Соединение массивов в один.
  • Неизменные и переменные функции.
  • Создание счётчика посещаемости.
  • Что такое сессии в программировании.
  • Какие манипуляции можно проводить с данными.
  • Постоянные выражения и редиректы.
  • ООП для продвинутых.
  • Что такое область видимости и для чего нужен этот параметр.
  • Конструкторы и деструкторы.
  • Неизменные свойства и методы.
  • Обработка ошибок и исключения.

Что узнаете:

  • Как настраивать Open-сервер.
  • Как создавать шаблоны для страниц.
  • Какие существуют методы работы с формами, и чем они отличаются друг от друга.
  • Как отправлять Email-письма через PHP.
  • Что такое трейты и магические методы.
  • Что такое локальный сервер и как его установить.

Преимущества курса:

. «Базовый курс PHP-7» от Андрея Андриевского

Пройти курс

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

Длительность: 46 уроков.

Сертификат: не выдаётся.

Формат обучения: видеоуроки.

Программа: на курсе разбираются следующие темы:

  • Как настроить PHP-7.
  • Всё о базовом синтаксисе.
  • Роль переменных и типов данных.
  • Классы и объекты.
  • Константы и константы класса.
  • Логические и условные операторы, а также операторы сравнения.
  • Циклы.
  • Массивы и их виды.
  • Различные виды функций.
  • Замыкания.
  • Работа с HTML-кодом.
  • Загрузка файла на сервер.
  • Суперглобальные массивы.
  • Сессии в PHP.
  • Конструктор и деструктор.
  • Сеттеры и геттеры.
  • Абстракция и полиморфизм.

Что узнаете:

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

Преимущества курса:

. «Уроки PHP» от OpenWeb

Пройти курс

Кому подойдёт: тем, кто планирует работать PHP-программистом

Длительность: 46 уроков.

Сертификат: не выдаётся.

Формат обучения: видеоуроки.

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

  • Обрезка строк по абзацам и символам.
  • Скрипт на PHP.
  • Инъекция — как защитить сайт.
  • Основные понятия PHP.
  • Подключение скриптов js и css.
  • Фреймворки PHP.
  • Отслеживание ошибок.
  • Тестирование кода PHP.
  • Связь с базой данных MySQL.
  • WordPress. Как создать уязвимость на сайте.
  • Создание шаблона с нуля.
  • Парсинг музыки с помощью PHP.
  • Как создать бота для ВК с помощью PHP.
  • Нейронная сеть на PHP.
  • Многопоточность и цепочный вызов.
  • Реализация цепочки блоков.
  • Работа с базой данных.
  • Проверка кода на ошибки.

Что узнаете:

  • Что такое фреймворк, и как он работает.
  • Как создавать ботов для социальных сетей с помощью PHP.
  • Что такое шифрование SLL.
  • Как создавать виджеты для сайтов.

Преимущества курса:

Php: openssl_csr_new – manual

When in doubt, read the source code to PHP!

$configargs is fairly opaque as to what is going on behind the scenes.  That is, until you actually look at php_openssl_parse_config() in ‘/ext/openssl/openssl.c’:

    SET_OPTIONAL_STRING_ARG(“digest_alg”, req->digest_name,
CONF_get_string(req->req_config, req->section_name, “default_md”));
SET_OPTIONAL_STRING_ARG(“x509_extensions”, req->extensions_section,
CONF_get_string(req->req_config, req->section_name, “x509_extensions”));
SET_OPTIONAL_STRING_ARG(“req_extensions”, req->request_extensions_section,
CONF_get_string(req->req_config, req->section_name, “req_extensions”));
SET_OPTIONAL_LONG_ARG(“private_key_bits”, req->priv_key_bits,
CONF_get_number(req->req_config, req->section_name, “default_bits”));

    SET_OPTIONAL_LONG_ARG(“private_key_type”, req->priv_key_type, OPENSSL_KEYTYPE_DEFAULT);

Here we can see that SET_OPTIONAL_STRING_ARG() is called for most inputs but for ‘private_key_bits’ SET_OPTIONAL_LONG_ARG() is called.  Both calls are C macros that expand to code that enforces the expected input type.  The generated code ignores the input without warning/notice if an unexpected type is used and just uses the default from the configuration file.  This is why using a string with ‘private_key_bits’ will result in unexpected behavior.

Further inspection of the earlier initialization in the same function:

    SET_OPTIONAL_STRING_ARG(“config”, req->config_filename, default_ssl_conf_filename);
SET_OPTIONAL_STRING_ARG(“config_section_name”, req->section_name, “req”);
req->global_config = CONF_load(NULL, default_ssl_conf_filename, NULL);
req->req_config = CONF_load(NULL, req->config_filename, NULL);

    if (req->req_config == NULL) {
return FAILURE;
}

And elsewhere in another function:

    /* default to ‘openssl.cnf’ if no environment variable is set */
if (config_filename == NULL) {
snprintf(default_ssl_conf_filename, sizeof(default_ssl_conf_filename), “%s/%s”,
X509_get_default_cert_area(),
“openssl.cnf”);
} else {
strlcpy(default_ssl_conf_filename, config_filename, sizeof(default_ssl_conf_filename));
}

Reveals that ‘config’ in $configargs is an override for any default setting elsewhere.  This actually negates the comment in the documentation that says “Note: You need to have a valid openssl.cnf installed for this function to operate correctly. See the notes under the installation section for more information.”  A more correct sentence would be “Note:  You need to either have a valid openssl.cnf set up or use $configargs to point at a valid openssl.cnf file for this function to operate correctly.”

All of that goes to show that looking at the PHP source code is the only real way to figure out what is actually happening.  Doing so saves time and effort.

Битовые операции

Битовые операции позволяют работать с битами в целочисленных данных. Целочисленные значение переводятся в равнозначное двоичное значение 5 -> 0101 = 0*8 1*4 0*2 1*1. Применяйте круглые скобки для назначения приоритета операциям.

Всегда следите за конвертацией данных. Если оба параметра строки, то битовые оператор будет работать со значением символов ASCII.

  • $a & $b (И) — в результате получи установленные биты только те, которые установлены в обоих операндах.
  • $a | $b (ИЛИ) — Остаются биты, которые установлены или в $a, или в $b.
  • $a ^ $b (Xor (исключающее ИЛИ)) — остаются биты, установленные или в $a или в $b, но не в обоих.
  • ~ $a (НЕ) — отрицание.
  • >> (сдвиг вправо) – Все биты смещаются вправо на N порядков, крайние правые биты отбрасываются, а слева добавляются нули. Аналог деления на 2 без учета остатка.
  • Смещение в PHP — арифметическая операция. Биты смещенные за пределы разрядной сетки просто отбрасываются. При левом сдвиге нули добавляются справа, при правом — слева. Знаковый бит — бит самого старшего разряда в числе (0 — положительное число, 1 — отрицательное), отбрасывается при левом сдвиге, то есть знак числа не сохраняется при операциях сдвига. При правом сдвиге знаковый бит копируется и знак числа сохраняется.

Примером битовой операции может служить установка уровня отладки в PHP, то есть E_ALL & ~E_NOITCE(00000000000000000111011111111111 & 11111111111111111111111111110111 дает 00000000000000000111011111110111 количество бит определяется типом системы, в примере используется 32 битная система).

Магические константы __ххх__

Ядро PHP имеет в своем составе ряд предустановленных констант (E_ERROR, TRUE, FALSE, NaN). Эти константы могут принимать различное значение в зависимости от места их использования. Все эти константы регистронезависимы.

  • __LINE__ — Номер текущей строки скрипта
  • __FILE__ — Полный путь к скрипту. При использовании в подключенном файле (include) возвращает имя подключенного файла.
  • __DIR__ — Каталог скрипта. При использовании в подлюченном файле, возвращается каталог подключенного файла. Аналог dirname(__FILE__). Не содержит конечного символа /, если каталог не корневой.
  • __FUNCTION__ — Имя функции. (Добавлено с PHP 4.3.0). Начиная с PHP5 константа содержит имя функции именно в таком виде, в каком она была задана (регистрозависимое имя).
  • __CLASS__ — Имя класса. (Добавлено в PHP 4.3.0). Начиная с PHP5 имя хранится в регистрозависимом виде. Также переменная содержит в себе имя пространства имен. Начиная с PHP 5.4 константа может быть использована в трейтах. При использовании в трейте константа возвращает класс трейта.
  • __TRAIT__ — Регистрозависимое имя трейта. Содержит пространство имен.
  • __METHOD__ — Регистрозависимое имя метода
  • __NAMESPACE__ — Регистрозависимое имя пространства имен
Про сертификаты:  Sungear Сертификат

Массивы

Массивы могут состоять из абсолютно разных типов данных, включая массивы. Элементы массива упорядочены.

Ключи приводятся к другим типам: float в integer, булевы значения в 1 (TRUE) или 0 (FALSE), NULL в “”(пустая строка).

Перечисляемыми массивами называются массивы, ключами которых являются integer, если ключи — строки, то такой массив называется ассоциативным.

Если вы не указываете ключ при добавлении элемента в массив, то PHP автоматически использует значение на один больше последнего добавленного целочисленного ключа, даже если этот элемент был удален.

$array[‘key’] и $array{‘key’} — равнозначны. Ключ должен быть указан в кавычках, иначе PHP примет его за константу. Если такой константы не будет обнаружено, то вы увидите E_NOTICE.

Это не будет работать: print «Hello $arr[‘fruit’]»; Нужно заменить на “Hello “.$arr[‘fruit’]; или “Hello {$arr[‘fruit’]}”;.

$myArray = array(‘a’=>’aa’,’b’=>’bb’); тоже самое что и $myArray[‘a’] = ’aa’; $myArray[‘b’]=’bb’;.

Используйте unset($myArray[‘key’]) или unset($myArray) для удаления массива.

Операторы сравнения

Как уже понятно из названия, эти операторы используются для сравнения значений.

  • $a == $b (Equivalence) — TRUE если операнды равны после приведения типов.
  • $a === $b (Identity) — TRUE если операторы равны и они одного типа.
  • $a != $b $a <> $b (Non-equivalent) — TRUE если операторы не равны после приведения типов.
  • $a !== $b (Non-identical) — TRUE если операторы не равны или имеют разный тип
  • $a < $b (Less than) — TRUE если $a строго меньше $b
  • $a > $b (Greater than) — TRUE если $a строго больше $b.
  • $a <= $b (Less than or equal to) — TRUE если $a меньше или равно $b.
  • $a >= $b (Greater than or equal to) — TRUE если $a больше и равно $b.

При сравнение числа со строкой или строковые значения подразумевают числа в своем значении, то каждая строка приводится к численному значению, которые впоследствии сравниваются. Приведение типов не используется при работе с операторами === или !==.

Для различных типов сравнение работает немного по разному:

  • null со строкой — null приводится к "", то есть к пустой строке
  • bool или null с другими типами — значения приводятся к булеву значению
  • сравнение объектов — при использовании оператора ==, объекты сравниваются следующим образом — два объекта равны в том случае, если их поля имеют одинаковое значения и они являются экземплярами одного класса. При использовании оператора ===, объекты равны в том случае, если они указываются на одну область памяти.
  • строка, ресурс или число со строкой, ресурсом или числом — строки и ресурсы приводятся к численному значению.
  • массив с массивом — массив с меньшим числом элементов меньше, если ключ из первого массива не существуют во втором массиве, то они не сравниваются, в остальных случая массивы сравниваются по значениям элементов.
  • массив с любым типом — массив всегда больше.
  • объект с любым типом — объект всегда больше.

Внимание: (0 == “a”) true, (“1” == “01”) true.

Прохождение

В назначенный час выходим из дома, проходим 50 метров и оказываемся в тестцентре (ээээ, просто так получилось, что он как раз через дорогу, по-нормальному нужно приехать за 15 минут до начала). Pearson Vue говорит, что с собой надо взять два актуальных удостоверения, и хотя бы одно из них должно быть с фоткой.

Новинкой было то, что у вопросов есть возможность оставлять комменты, это очень здорово. Вопросы можно откладывать (Mark for review). Я не откладывал, потому что всё и так было знакомо. В итоге прошёл экзамен за 50 минут. После прохождения появляется экран со списком вопросов, где можно ещё раз всё просмотреть, и ответить на пропущенные.

Итого – пробуйте, при текущих условиях пройти этот тест стало безумно просто и пока компании это не просекли можно ещё успеть пощеголять сертификатом и выбить прибавку к зарплате.

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

Апдейт: Online Test Centre поменял логику и теперь экзамены нельзя бесконечно проходить в онлайне, надо регистрироваться, скачивать Loorex, скачивать ote-файл и проходить локально.

Расширения

Php имеет около 86 расширений (расширения ядра для массивов, классов, объектов и т.д.), в каждом в среднем по 30 функций.

Расширения, с которыми php был скомпилирован, могут быть инициализированы с помощью —enable-extname или -with-extname. Прочие необходимо добавить и настроить в файле php.ini.

PEAR (PHP Extension and Application Repository) представляет собой репозиторий (библиотеку) кодов, написанных на php для часто встречающихся функций. Сейчас он развился в систему пакетов, для распространения сторонних библиотек, как, например PECL.

PECL (PHP Extension Community Library) написан на C, что позволяет использовать систему пакетов PEAR. PECL облегчает процесс создания расширений для PHP. Используя команду pecl, выполните следующее:

pecl install extname

Таким образом вы загрузите исходный код extname, скомпилируете и установите extname.so в extension_dir. extname.so затем можно подключить посредством php.ini (добавив строку extension=extname.so)

Ядро PHP состоит из двух частей. На самых низких уровнях вы найдете Zend Engine (ZE). ZE интерпретирует человекочитаемый скрипт в машиночитаемый токен, а затем исполняет этот токен в процессном пространстве. ZE также управляет памятью, зоной видимости переменных и функциями диспетчеризации.

Другая половина ядра это собственно ядро PHP. PHP отвечает за коммуникациею и связь с SAPIlayer (Server Application Programming Interface, по сути это название сред исполнения PHP — Apache, IIS, CLI, CGI и т.д.). SAPI также осуществляет контроль слоя для safe_mode и проверок open_basedir, и потоковых слоев, которые связывают файлы и сети I/O с функциями пользователя, такими, как fopen(), fread() и fwrite().

Когда SAPI запускается, например, в ответ на запуск /usr/local/apache/bin/apachectl, PHP начинает инициализацию подсистем своего ядра. Ближе к окончанию этой процедуры запуска, PHP загружает код каждого расширения и выполняет инициализацию каждого модуля (MINIT).

После инициализации запроса ZE перехватывает обработку, перевод PHP скрипт сначала в токены, а затем в коды операции, которые впоследствии исполняет.

Форматирование строк

  • localeconv() — массив, содержащий информация для форматирования строк с учетом локали.
  • nl_langinfo($item) — возвращает информацию о языке и локали
  • setlocale ( LC_ALL, ”zh-hk”) — устанавливает локаль для функций, работающих с ней.
  • number_format ($number) — возвращает отформатированное число
  • money_format ($format, $number)  money_format() не существует в Windows.
  • quotemeta($string)— добавляет обратный слеш перед следующими символами: . * ? [ ^ ] ( $ )
  • htmlspecialchars($string) — переводит &,”,’,<,> в HTML элементы, то есть «
  • htmlspecialchars_decode($string) — переводит элементы из предыдущей функции в специальные символы
  • htmlentities($string,FLAGS) — переводит все, что можно в HTML элементы, необходимо только если ваша страница в одной из следующих кодировок ASCII или LATIN-1, но не UTF-8.
  • html_entity_decode ($string) — переводит все HTML элементы в строки
  • get_html_translation_table(HTML_ENTITIES | HTML_SPECIALCHAR) — возвращает таблицу перевода для htmlspecialchars() и/или htmlentities(), по-умолчанию — для обоих функций
  • strip_tags($string,$allowable_tags) — удаляет все открывающие и закрывающие теги (за исключением $allowable_tags) из строки
  • nl2br($string) — переводит символ новой строки в <br>
  • wordwrap ($string,$length,$break_symbol,$breakwords); — добавляет $break_symbol или, по-умолчниаю, "n" через каждые $length, если $breakwords установлена в TRUE, то слова будут разбиваться (по-умолчанию FALSE)
  • ucfirst ($string); — перевод первого символа в верхний регистр
  • lcfirst ($string); — перевод первого символа в нижний регистр
  • strtoupper ($string); — перевод строки в верхний регистр
  • strtolower ($string); — перевод строки в нижний регистр
  • ucwords ($string);— перевод первого символа каждого слова в строке
  • bin2hex ($string); hex2bin ($string); — перевод бинарных данных в шестнадцатеричный формат (ASCII представление), и наоборот
  • convert_cyr_string($string); — перевод из одного набора кириллических символов в другой
  • hebrev($string); — Преобразует текст на иврите из логической кодировки в визуальную (только для rtl текста)
  • hebrevc ($string); — Преобразует текст на иврите из логической кодировки в визуальную с преобразованием перевода строки
  • chr($ascii); — возвращает специальный символ, то есть chr(10) -> n
  • ord($string); — возвращает ASCII значение, то есть ord(“n”) -> 10
  • convert_uuencode($string); — кодирует строку с использованием uuencode алгоритма, переводя строки в печатуемые символы, примерно на 35% больше от оригинала
  • convert_uudecode($string); — декодирует
  • base64_encode($string); — кодирует с применением base64 алгоритма, примерно на 33% больше от оригинада
  • base64_decode($string); — декодирует
  • quoted_printable_encode($string);— PHP 5.3 Кодирует 8-битную строку в с помощью метода quoted-printable для использования в MIME
  • quoted_printable_decode($string); — декодирует
  • print ($string); или print “$string”; — всегда возвращает 1
  • printf ($format, $args, …); — выводит отформатированную строку, возвращает длину выведенной строки, то есть $str = printf(‘Hello %s‘,’Edward’); печатает Hello Edward, $str == 12
  • sprintf ($format, $args); // возвращает отформатированную строку
  • vprintf ($format, $array_args); // выводит отформатированную строку, принимает массив в качестве аргумента
  • vsprintf (); // возвращает отформатированную строку, принимает массив в качестве аргумента
  • fprintf ($handle, $format, $args); // передает отформатированную строку ресурсу, например, при записи строки в открытый файл
  • sscanf ($string, $format, $optional_args); // читает из $string и форматирует в соответствии с $format в качестве массива, если $optional_args передан, то значения $format будут назначены $optional_args
  • fscanf ($handle, $format, $optional_args); // читает из ресурса, например, из файла, при каждом вызове читается одна строка
  • str_pad ($string,$length,$optional_padding_character); // Дополняет строку другой строкой до заданной длины
Про сертификаты:  Сертификат подлинности картины

Zend certified engineer (zce) php-2021

ZCE (Zend Certified Engineer) — данный экзамен предназначен для проверки технических знаний и навыков, необходимых на современном рынке труда. Пройти данный экзамен можно в более чем 4000 центров тестирования Person Vue по всему миру.

Решил я для себя пройти данную сертификацию по PHP от Zend, чтобы получить сертификат ZCE (Zend Certified Engineer).

На данный момент компания Zend предлагает 2 программы сертификации:

  1. PHP Certification. Сертификация по языку PHP.
  2. Zend Framework Certification. Сертификация по фреймворку Zend Framework и ее компонентов.

Рассмотрим более подробно получение сертификата по PHP. На данный момент информации по PHP Certification очень мало. Приведу здесь все, что нашел на данный момент.

Сертификация PHP-2021 проходит до версии PHP 7.1 включительно, что очень радует. Т.к данная версия на данный момент самая «свежая».

Для подготовки можно воспользоваться следующими книгами, Zend PHP Certification Study Guide от Zend Technologies (книга не совсем подходит для подготовки к сертификации, но зато описано достаточно подробно), либо Zend PHP 5 Certification Study Guide — a php[architect] Guide (очень много интересной информации, даже для опытных разработчиков, правда многие практики из книги в реальной разработке не используются). И для проверки своих знаний, можно воспользоваться Zend PHP Certification Practice Test Book.

Прочитав данные книги, все равно оставалось ощущение недосказанности, поэтому решился потратиться, и купить самую актуальную версию Study Guide с официального сайта Zend. Потратил на данную книгу я 19,95$ (1184,03 руб по текущему курсу), хотел найти discount code, для получения скидки, но так и не нашел валидный код в интернете.

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

Zend certification. не так страшен черт

Хотелось бы поделиться с уважаемым сообществом своим опытом получения заветного Zend сертификата.

Ни для кого не секрет, что к многочисленным сертификациям, и к ZCPE (Zend Certified PHP Engineer) в частности, все относятся по-разному: кто-то коллекционирует их и развешивает на стенках для самолюбования, кто-то считает пустой тратой времени и денег.

Для меня же ZCPE – это показатель определенного уровня знаний, не столько для кого-то, а для себя, когда можешь сказать: «Так, с этим разобрались, теперь изучим что-нибудь еще». И если вы, как и я, житель страны, где работодателю ваши сертификаты по большей части безразличны, то стимулом для вас будут только личные мотивы, да и абстрактное «хочу» тоже никто не отменял.

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

Я давно собирался пройти сертификацию, но постоянно откладывал это ответственное мероприятие на потом, пока, наконец, не прочитал на «Хабре» заметку «Я — сертифицированный PHP-специалист», которая подтолкнула меня к действиям. Ведь на самом деле ожидание подходящего момента и перманентная подготовка «по чуть-чуть» может растянуться на долгие месяцы и годы, а потом и желание пропадет. В некотором роде я последовал советам автора заметки, но пошел еще немного дальше в радикальности трактовки пресловутого выражения о «рубиконе».

Если вам, как и мне, сложно не согласиться с Сократом, то определить ту границу, когда вы почувствуете, что готовы сдавать экзамен, очень сложно. Можно вечно что-то перечитывать по которому разу, изучать мануалы и отрабатывать тесты на практике, но все равно понимать, что где-то что-то упущено и недоучено. Также, когда ничто над вами не довлеет, то и заставить себя прилежно готовиться сложно. И здесь мне было полезно применить суровый подход, практикуемый в учебных заведениях, а именно – назначить себе дату экзамена еще до подготовки. На сайте pearsonvue я зарезервировал для себя время и место экзамена, оплатил ваучер без комиссии тестового центра. На приведение знаний в порядок у меня был почти месяц. К сожалению, мозгу этот срок показался оптимистично большим. Почти 2 недели пролетели в странном предвкушении и безделье.

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

  1. zend-php.appspot.com/questions_list – известный всем дамп вопросов из теста, позволяет быстро выявить слабые места;
  2. PHP Certification Study Guide – хоть и маленькая, но полезная книжица, краткий обзор всех тем и несколько вопросов, аналогичных вопросам теста;
  3. edward-designer.com/web/passing-php-5-3-certification-exam/ — отличный блог, где в соответствии с гайдом из первого пункта изложено гораздо больше теории;
  4. php.net – официальная документация.

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

certificationking.com

. В дампе вопросов оттуда встретил несколько дословно совпавших с теми, что попались мне.

В итоге на подготовку у меня ушло около 2 недель. Суммарное количество страниц перечитанного материала – около 500, что, в общем, совсем немного, однако я для лучшего запоминания вел еще и конспект от руки, а также отрабатывал наиболее интересные моменты на практике, потому это естественным образом здорово замедляло процесс за счет повышения качества знаний.

Перед тестом главным вопросом и источником тревоги было сомнение, хватит ли отведенного времени. Как оказалось, 90 минут на 70 вопросов теста – это более, чем достаточно, если не засиживаться долго над задачами, вызывающими затруднения. Лучше их пропускать и возвращаться позже. После ответов на все вопросы у меня оставалось 35 минут, чтобы еще раз просмотреть и перепроверить все задания. Благодаря этому удалось отыскать несколько ошибок. Программа для тестирования дважды переспросила, точно ли я хочу завершить тест, так как время у меня еще оставалось, а я был настойчив. Секунда ожидания, когда впечатлительным людям лучше на экран не смотреть. Открываем глаза, смотрим на экран и смиряемся с судьбой.

Congratulations! You have passed the Zend Certified PHP Engineer.

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

P.S. Мой коллега для подготовки тренировался на вопросах с сайта onlinetestcentre.com. По его словам, примерно 70% вопросов в итоге практически совпали.

Оцените статью
Мой сертификат
Добавить комментарий