Автор оригинала: David Wong.
Руководство по нечетным навыкам Грамматика сахара часто предоставляет программистам более практичные методы кодирования, которые могут сделать код более кратким и плавным, а семантику более естественной. В этой статье представлено расширение PHP grammar sugar, написанное самим автором, и расширяющее новый способ получения суперглобальных переменных PHP. Автор – Фан Цзяпэн, член Технического комитета 360-филиала веб-службы TC.
Прежде всего, слово “грамматический сахар” ни в коем случае не является уничижительным термином. Это может принести удобство в нашу работу по разработке. Это легкий и удобный способ письма. Это не окажет негативного влияния на использование самого языка и не приведет к снижению производительности.
Обычно использование грамматического сахара может повысить читабельность программы, снизить сложность программы, снизить вероятность ошибок в кодировании, но также дружелюбно относится к инженерам-разработчикам, может повысить эффективность нашей разработки.
Превосходный грамматический сахар должен быть вливанием душевной мысли и применением простого письма. Здесь я использую картинку, чтобы показать:
СГ Суперглобальные значения относятся ко всем переменным, доступным в глобальной области. СГ Расширен новый метод получения суперглобальных переменных PHP.
Этими суперглобальными переменными являются _SERVER, _GET, _POST, _FILES, _COOKIE, _SESSION, _REQUEST, _ENV.
Конечно, он также может быть применен к сценариям пользовательских переменных.
Очень важным моментом является то, что: Это очень просто. !
2.1 Предыстория проекта
Идея проста для начала, и мы должны быть в состоянии догадаться, что она делает, исходя из названия расширения.
Исходя из предпосылки оптимальной производительности:
- Простой для понимания и упрощения метод получения параметров HTTP
- Значения параметров HTTP должны быть отфильтрованы, преобразованы и расшифрованы равномерно
- Перед получением параметров HTTP вам потребуется некоторая предопределенная операция
- Для всего поведения параметров HTTP необходимо синхронно обновлять соответствующий суперглобальный PHP
- Используйте его только при объявлении, а не при запросе полной обработки суперглобалов PHP с самого начала
- В глобальной грамматике расширьте возможность получения параметров HTTP
Итак, SG Чтобы решить эти проблемы, он разработал более приятную грамматику, которая была выпущена в версии v3.0.0.
2.2 Адрес проекта
2.2 Адрес проекта
Добро пожаловать для отправки вопросов~
Поддерживаемая в настоящее время версия PHP показана на следующем рисунке:
- Простой, быстрый и легкий
- Доступ с нулевым копированием к суперглобальным переменным PHP с использованием SG будет синхронно обновлять суперглобальные переменные PHP
- Вызов пользовательских функций до того, как будут поддерживаться значения, и по умолчанию строковые переменные автоматически вызывают PHP trim
- Решите проблему неопределенных рядов при использовании суперглобальных переменных PHP (Неопределенная переменная, Неопределенное смещение)
- При использовании статического метода вместо десятичной точки используется Размер массива PHP
- При использовании глобального объявления подчеркните вместо измерения массива PHP
- Поддерживает настраиваемую глобальную глубину поиска переменной$, поиск уровня 1 по умолчанию
| тип bool | 0 Закрыть 1 Открыть | PHP_INI_СИСТЕМА | 0 | отделка |
| тип bool | 1 поддерживает только один поиск уровня 0 неограниченный поиск | PHP_INI_СИСТЕМА | 1 | отделка |
| обуглить | Вызов функций обрезки PHP по умолчанию также поддерживает пользовательские функции | PHP_INI_ALL ВСЕ | отделка | отделка |
| ничего | sg::все() | ничего | $ГЛОБАЛЬНЫЕ |
| s | sg::получить/установить/имеет/del(‘s’) | глобальные доллары США | $_СЕРВЕР |
| g | sg::получить/установить/ имеет/дел(‘g’) | глобальный $g | $_GET |
| p | sg::получить/установить/имеет/del(‘p’) | глобальные просмотры страниц в долларах США | $_ПОСТ |
| f | sg::получить/установить /имеет/дел(‘f’) | глобальные $f | $_ФАЙЛЫ |
| c | sg::получить/установить/имеет/del(‘c’) | глобальный $c | $_КУККИ |
| n | sg::получить/установить/имеет/del(‘n’) | глобальные $n | $_СЕССИЯ |
| r | sg::получить/установить/имеет/del(‘r’) | глобальный $r | $ _ ЗАПРОС |
| e | sg::получить/установить/имеет/del(‘e’) | глобальные $e | $_ENV |
6.1 Глобальные декларации (PHP7)
6.2 Функциональный Подход
7.1 Глобальные декларации
global $g_key, $p_key, $c_key, $s_key, $f_key, $n_key, $e_key, $r_key
7.2 Статический метод
bool sg::set(string $key, mixed $value) mixed sg::get(string $key [, mixed $default_value = null]) bool sg::has(string $key) bool sg::del(string $key [, mixed $... ]) array sg::all(void)
8.1 Примеры глобальных деклараций
8.1.1
Результат приведенного выше примера выглядит следующим образом:
string(12) "GET_test_key" string(16) "NEW_GET_test_key" string(16) "NEW_GET_test_key" string(16) "NEW_GET_test_key" string(16) "NEW_GET_test_key"
8.1.2
Результат приведенного выше примера выглядит следующим образом:
string(12) "GET_test_key" string(12) "GET_test_key" string(12) "GET_test_key" string(12) "GET_test_key"
8.1.3 sg.имя_функции
Результат приведенного выше примера выглядит следующим образом:
string(8) "A Banana"
8.2 Примеры статических методов
8.2.1 получить/установить/имеет/del()
Результат приведенного выше примера выглядит следующим образом:
------------------start NULL string(3) "def" bool(false) ------------------set bool(true) ------------------get string(8) "A banana" string(8) "A banana" bool(true) ------------------del bool(true) ------------------get NULL bool(false)
8.2.2 Результат приведенного выше примера выглядит следующим образом:
Результат приведенного выше примера выглядит следующим образом:
string(8) "A Banana"
Что происходило большую часть дня, на что похоже представление? Я провел простой тест AB в локальной среде (abc 100-n 10000). Тестовый код PHP выглядит следующим образом:
9.1 по умолчанию – исходный код
9.2 Глобальные объявления – Исходный код
Результаты теста AB следующие:
9.3 по умолчанию – Результаты
$ ab -c100 -n10000 localhost/default.php?key=hello_world
Concurrency Level: 100 Time taken for tests: 1.615 seconds Complete requests: 10000 Failed requests: 0 Write errors: 0 Total transferred: 251370000 bytes HTML transferred: 250000000 bytes Requests per second: 6190.21 [#/sec] (mean) Time per request: 16.155 [ms] (mean) Time per request: 0.162 [ms] (mean, across all concurrent requests) Transfer rate: 151956.36 [Kbytes/sec] received
9.4 Глобальные декларации – Результаты
$ ab -c100 -n10000 localhost/sg.php?key=hello_world
Concurrency Level: 100 Time taken for tests: 1.441 seconds Complete requests: 10000 Failed requests: 0 Write errors: 0 Total transferred: 251931544 bytes HTML transferred: 250557708 bytes Requests per second: 6938.67 [#/sec] (mean) Time per request: 14.412 [ms] (mean) Time per request: 0.144 [ms] (mean, across all concurrent requests) Transfer rate: 170709.87 [Kbytes/sec] received
СГ Он обладает следующими преимуществами:
- Совместимость с текущими основными версиями PHP
- Это обеспечивает более приятную грамматику и обогащает применение суперглобалов.
- Мы всегда верим, что простота-это Царство
Примечание: Режим глобального объявления в настоящее время поддерживает только неизменяемые имена переменных.
(оригинальное содержание технологии 360, перепечатано, пожалуйста, не забудьте сохранить двумерный код в конце текста, спасибо ~)
О технологии 360
360 Technology-это общедоступный номер для обмена технологиями, созданный командой 360 Technology, которая каждый день продвигает технологические товары.
Дополнительная технологическая информация Приглашаем Вас Обратить внимание на Общедоступный номер Wechat “360 Technologies”
Оригинал: “https://developpaper.com/sg-a-simple-php-syntax-sugar-extension/”