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

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

  1. Админ

    В связи с вероятным переходом в следующем году на новую схему подключения файлов рекомендую не использовать настройку с одновременным подключением d- и h-файлов. Поддержка последовательного подключения этих файлов, возможно, сохранится, но только для совместимости с кодом наподобие

    $r0['module'] = 'exit';
    $r0['bits'] = 32;
    

    В новой схеме будут использоваться только два бита поля bits, а не три, как сейчас: 002 (0) – подключить общий шаблон, 012 (слагаемое 16) – подключить вложенный шаблон модуля и общий шаблон, 102 (слагаемое 32) – подключить основной код модуля, 112 (слагаемое 48) – подключить основной код модуля в контексте открытого соединения с базой данных. Подключение шаблонов в последних двух случаях, возможно, будет происходить на основе значений, возвращаемых при подключении основного кода модуля.

  2. Юлия

    В новой схеме биты 4, 5 определяют «режим подключения файлов»: 002 (0) – подключить основной шаблон; 012 (1) – подключить вложенный и основной шаблоны; 102 (2) – подключить заголовочный файл, затем вложенный и основной шаблоны; 112 (3) – подключить файл с кодом в контексте открытого первичного соединения с базой данных, затем вложенный и основной шаблоны. Сохранена возможность изменять описанный выше порядок непосредственно в подключаемом файле: в заголовочном файле можно запретить подключение вложенного шаблона, а также выполнить выход из приложения; в файле с кодом, работающим в контексте открытого первичного соединения с базой данных, можно разрешить подключение заголовочного файла, либо запретить подключение вложенного шаблона (выполнять выход из приложения в данном контексте не рекомендуется). Также можно изменять порядок и в основном файле движка, например в режимах 2 и 3 при подключении первого файла можно изменить номер режима на 1 или даже на 0 (не меняя при этом значения других битов поля bits, что проще всего сделать, используя операцию «Исключающее ИЛИ»: 2^3=1, 3^2=1, 2^2=0, 3^3=0).

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

  3. Юлия

    Вышла версия 3.09. В рассылку также включена pre-версия для тех, кто пока не готов к переходу на новую схему подключения файлов.

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

  4. Всеволод

    Неплохо. Режим подключения файлов хорошо читается по значению поля bits: 0+ - x0, 16+ - x1, 32+ - x2, 48+ - x3. Это если не использовать зарезервированные биты.

  5. Админ

    MySQL поддерживает шестнадцатеричные литералы (в двух нотациях), поэтому номер режима подключения файлов можно указывать в виде старшей цифры двузначного шестнадцатеричного числа, определяющего значение поля bits, например режим x1 может быть установлен посредством значения 0x10. Для установки режима x0 можно не указывать старшую цифру, но только в нотации, не требующей четного количества шестнадцатеричных цифр в числе, например можно использовать значение 0x0, где единственный ноль справа от икса – это младшая цифра, не относящаяся к режиму подключения файлов.

    MySQL также поддерживает и двоичные литералы (тоже в двух нотациях). Т.е. можно указывать значение поля bits в виде двоичного кода, как это сделано в описании, при этом старшие незначащие нули записывать необязательно, например: 0b10000.

  6. anomal6

    Как лучше использовать mysqli_set_charset внутри функции подключения? Мне это нужно, чтобы в БД занести кириллицу правильно.

  7. Админ

    Если вы не контролируете в полной мере настройки сервера баз данных, использование set_charset обязательно. Функция подключения может быть такой:

    function mysqli_open()
    {
      require PATH.'include/dbconfig.php';
      if (($link = mysqli_connect($host, $user, $pw, $db)) && !$link->set_charset('utf8'))
      {
        $link->close();
        return false;
      }
      return $link;
    }
    
  8. Юлия

    В версии 3.10 появится дополнительная переменная с замыканием для «вычисления» имени таблицы. Предположительно переменная будет называться $table. Она может использоваться прямо в PHP-строке, например:

    // обращение к таблице категорий
    $cat=query("SELECT * FROM `{$table()}` WHERE `id`='$p0'");
    
    // обращение к таблице объектов
    $obj=query("SELECT * FROM `{$table($r0['id'])}` WHERE `id`='$p1'");
    

    Также для данного замыкания будут зарезервированы или определены константы ROOT_TABLE и TABLE_PREFIX со значениями по умолчанию 'site_categories' и 'site_' соответственно.

  9. Юлия

    Вышла версия 3.10, юбилейная, т.к. движку сегодня исполняется 10 лет!

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

    • добавлена переменная $table с замыканием для «вычисления» имени таблицы (смотрите пример использования в предыдущем комментарии);
    • изменен порядок выполнения проверки адреса запроса по заданному шаблону и соединения с базой данных, так что теперь можно добавлять дополнительные проверки адреса в ту же структуру ветвления, находясь вне контекста открытого соединения с базой данных, например «перехватить» запрос к главной странице без соединения с базой данных следующим образом:

      if ($_SERVER['REQUEST_URI']=='/') { ... }
      elseif (основное условие) { ... }
      else error(404);
      
    • изъято использование переменной $_SERVER['QUERY_STRING'], для получения значения переменной $pn добавлено использование переменной $_GET['p'];
    • незначительно изменены правила внешнего перенаправления в файле .htaccess, прилагаемом к движку.

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

  10. Юлия

    Добавлена новая услуга «Подписка на рассылку G-Drive для изучающих PHP/MySQL» стоимостью 10 руб. Предзаказ можно сделать через форму обратной связи, указав в тексте сообщения фразу «Интересует пакет №14».

    Внимание! В 2021 году стоимость подписки будет увеличена до 100 руб.

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

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