Выполнен незначительный рефакторинг кода. Попробовала заменить глобальную переменную $layout на «изолированную» переменную extra('layout'). В рассылку также включена pre-версия для тех, кто пока не готов отказываться от использования $layout.
Из официального названия исчезла черточка в соответствии с трендом, зародившимся в 2020 году. Теперь движок можно называть G Drive или Gency Drive.
Рассылку запущу сегодня или в один из ближайших дней.
У некоторых введенная переменная extra('layout') вызывает конфликт. В связи с этим вопрос ко всем, будет ли функция layout() вызывать подобный конфликт, т.е. используется ли одноименная функция в ваших разработках для каких-то других целей или с какими-то другими параметрами, чем layout('newlayout') для сеттера и layout() для геттера.
Возможно, запущу рассылку с таким вопросом.
В версии 3.12 переменная extra('layout') не включена в код функции extra, так что вполне можно использовать переменную с другим именем или вовсе не использовать подобную переменную, как это было раньше в оригинальном коде каркаса.
Если мы решим включить определение этой переменной в код функции extra (сейчас это обсуждается), будет разрешено его убирать из функции, т.е. можно будет вернуть текущий вариант реализации функции при появлении в ней подобных изменений:
Переменная $p, содержащая полный путь, признана устаревшей. Используйте для получения пути $_SERVER['REQUEST_URI'] или $px.
Переменная $table, ранее содержащая замыкание для «вычисления» имени таблицы, признана устаревшей. До своего удаления переменная $table будет содержать имя функции table, которая была добавлена. Данную функцию разрешено редактировать. Если данная функция вызывает конфликт имен, ее можно переименовать и поместить новое имя в переменную $table.
Рассылку запущу сегодня или в один из ближайших дней.
Для использования схемы с одним типом контроллера и сохранения возможности быстрого закрытия соединения с базой данных нужно изменить функции открытия и закрытия соединения (достаточно изменить только функцию закрытия, опираясь на то, что открытие выполняется всегда).
Простая и достаточно универсальная функция закрытия соединения с базой данных, опирающаяся на значение переменной $link:
function db_close(&$link)
{
if (isset($link))
{
$link->close();
$link = null;
}
}
На данный момент я склоняюсь к включению в G Drive именно такой функции.
Если использовать один тип обработчиков (не считая шаблонов), можно добавить и простую поддержку исключений. Например, заключить подключение обработчика в блок try, чтобы не писать каждый раз try-catch внутри обработчика.
Также следует явно определить класс HTTP-исключений с уточнением семантики аргументов конструктора $message и $code, чтобы не использовать для генерации таких исключений базовый класс Exception. Уточнять тип исключения можно и в одном блоке catch:
Вышла версия 3.12.
Выполнен незначительный рефакторинг кода. Попробовала заменить глобальную переменную $layout на «изолированную» переменную extra('layout'). В рассылку также включена pre-версия для тех, кто пока не готов отказываться от использования $layout.
Из официального названия исчезла черточка в соответствии с трендом, зародившимся в 2020 году. Теперь движок можно называть G Drive или Gency Drive.
Рассылку запущу сегодня или в один из ближайших дней.
У некоторых введенная переменная extra('layout') вызывает конфликт. В связи с этим вопрос ко всем, будет ли функция layout() вызывать подобный конфликт, т.е. используется ли одноименная функция в ваших разработках для каких-то других целей или с какими-то другими параметрами, чем layout('newlayout') для сеттера и layout() для геттера.
Возможно, запущу рассылку с таким вопросом.
В версии 3.12 переменная
extra('layout')
не включена в код функции extra, так что вполне можно использовать переменную с другим именем или вовсе не использовать подобную переменную, как это было раньше в оригинальном коде каркаса.Если мы решим включить определение этой переменной в код функции extra (сейчас это обсуждается), будет разрешено его убирать из функции, т.е. можно будет вернуть текущий вариант реализации функции при появлении в ней подобных изменений:
На выходных обсуждали на php-форуме шаблонизацию. Вспомнилась прежняя семантика битов 4-5:
Или наоборот.
Миш, можно использовать данную схему, если не нужны заголовочные файлы, как особый тип контроллеров.
Вышла версия 3.13.
Улучшен фильтр контроля уникальности идентификатора объекта, используемый при выборе объектов с числовыми идентификаторами в поле id по значению $p1:
Переменная $p, содержащая полный путь, признана устаревшей. Используйте для получения пути $_SERVER['REQUEST_URI'] или $px.
Переменная $table, ранее содержащая замыкание для «вычисления» имени таблицы, признана устаревшей. До своего удаления переменная $table будет содержать имя функции table, которая была добавлена. Данную функцию разрешено редактировать. Если данная функция вызывает конфликт имен, ее можно переименовать и поместить новое имя в переменную $table.
Рассылку запущу сегодня или в один из ближайших дней.
Для использования схемы с одним типом контроллера и сохранения возможности быстрого закрытия соединения с базой данных нужно изменить функции открытия и закрытия соединения (достаточно изменить только функцию закрытия, опираясь на то, что открытие выполняется всегда).
Простая и достаточно универсальная функция закрытия соединения с базой данных, опирающаяся на значение переменной $link:
На данный момент я склоняюсь к включению в G Drive именно такой функции.
Если использовать один тип обработчиков (не считая шаблонов), можно добавить и простую поддержку исключений. Например, заключить подключение обработчика в блок try, чтобы не писать каждый раз try-catch внутри обработчика.
Также следует явно определить класс HTTP-исключений с уточнением семантики аргументов конструктора $message и $code, чтобы не использовать для генерации таких исключений базовый класс Exception. Уточнять тип исключения можно и в одном блоке catch:
Можно добавить функцию abort:
А также добавить второй необязательный аргумент $message в функцию error.