Комментарии: 40

Предыдущие 10 комментариев

  1. Юлия

    Вышла версия 3.12.

    Выполнен незначительный рефакторинг кода. Попробовала заменить глобальную переменную $layout на «изолированную» переменную extra('layout'). В рассылку также включена pre-версия для тех, кто пока не готов отказываться от использования $layout.

    Из официального названия исчезла черточка в соответствии с трендом, зародившимся в 2020 году. Теперь движок можно называть G Drive или Gency Drive.

    Рассылку запущу сегодня или в один из ближайших дней.

  2. Юлия

    У некоторых введенная переменная extra('layout') вызывает конфликт. В связи с этим вопрос ко всем, будет ли функция layout() вызывать подобный конфликт, т.е. используется ли одноименная функция в ваших разработках для каких-то других целей или с какими-то другими параметрами, чем layout('newlayout') для сеттера и layout() для геттера.

    Возможно, запущу рассылку с таким вопросом.

  3. Админ

    В версии 3.12 переменная extra('layout') не включена в код функции extra, так что вполне можно использовать переменную с другим именем или вовсе не использовать подобную переменную, как это было раньше в оригинальном коде каркаса.

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

    static $a = ['layout' => 'index'];
    ...
    else $a = ['layout' => 'index'];
    
  4. Михаил

    На выходных обсуждали на php-форуме шаблонизацию. Вспомнилась прежняя семантика битов 4-5:

    • 4 – подключить вложенный шаблон;
    • 5 – подключить контроллер.

    Или наоборот.

  5. Юлия

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

  6. Юлия

    Вышла версия 3.13.

    Улучшен фильтр контроля уникальности идентификатора объекта, используемый при выборе объектов с числовыми идентификаторами в поле id по значению $p1:

    ord($r1['id']) > 57 || strcmp($p1, $r1['id']) == 0
    

    Переменная $p, содержащая полный путь, признана устаревшей. Используйте для получения пути $_SERVER['REQUEST_URI'] или $px.

    Переменная $table, ранее содержащая замыкание для «вычисления» имени таблицы, признана устаревшей. До своего удаления переменная $table будет содержать имя функции table, которая была добавлена. Данную функцию разрешено редактировать. Если данная функция вызывает конфликт имен, ее можно переименовать и поместить новое имя в переменную $table.

    Рассылку запущу сегодня или в один из ближайших дней.

  7. Юлия

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

  8. Юлия

    Простая и достаточно универсальная функция закрытия соединения с базой данных, опирающаяся на значение переменной $link:

    function db_close(&$link)
    {
        if (isset($link))
        {
            $link->close();
            $link = null;
        }
    }
    

    На данный момент я склоняюсь к включению в G Drive именно такой функции.

  9. Админ

    Если использовать один тип обработчиков (не считая шаблонов), можно добавить и простую поддержку исключений. Например, заключить подключение обработчика в блок try, чтобы не писать каждый раз try-catch внутри обработчика.

    Также следует явно определить класс HTTP-исключений с уточнением семантики аргументов конструктора $message и $code, чтобы не использовать для генерации таких исключений базовый класс Exception. Уточнять тип исключения можно и в одном блоке catch:

    catch (Exception $e)
    {
        error($e instanceof HttpException ? $e->getCode() : 503);
    }
    
  10. Админ

    Можно добавить функцию abort:

    function abort($code = 500, $message = '')
    {
        throw new HttpException($message, $code);
    }
    

    А также добавить второй необязательный аргумент $message в функцию error.

Отправить комментарий

Ваш адрес E-mail не будет опубликован.