Рубрики
Uncategorized

SG: Простое расширение сахара синтаксиса PHP

Автор оригинала: 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/”