В связи с вероятным переходом в следующем году на новую схему подключения файлов рекомендую не использовать настройку с одновременным подключением d- и h-файлов. Поддержка последовательного подключения этих файлов, возможно, сохранится, но только для совместимости с кодом наподобие
$r0['module'] = 'exit';
$r0['bits'] = 32;
В новой схеме будут использоваться только два бита поля bits, а не три, как сейчас: 002 (0) – подключить общий шаблон, 012 (слагаемое 16) – подключить вложенный шаблон модуля и общий шаблон, 102 (слагаемое 32) – подключить основной код модуля, 112 (слагаемое 48) – подключить основной код модуля в контексте открытого соединения с базой данных. Подключение шаблонов в последних двух случаях, возможно, будет происходить на основе значений, возвращаемых при подключении основного кода модуля.
В новой схеме биты 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.09. В рассылку также включена pre-версия для тех, кто пока не готов к переходу на новую схему подключения файлов.
Материалы блога будут постепенно обновляться с учетом новой схемы подключения файлов.
Неплохо. Режим подключения файлов хорошо читается по значению поля bits: 0+ - x0, 16+ - x1, 32+ - x2, 48+ - x3. Это если не использовать зарезервированные биты.
MySQL поддерживает шестнадцатеричные литералы (в двух нотациях), поэтому номер режима подключения файлов можно указывать в виде старшей цифры двузначного шестнадцатеричного числа, определяющего значение поля bits, например режим x1 может быть установлен посредством значения 0x10. Для установки режима x0 можно не указывать старшую цифру, но только в нотации, не требующей четного количества шестнадцатеричных цифр в числе, например можно использовать значение 0x0, где единственный ноль справа от икса – это младшая цифра, не относящаяся к режиму подключения файлов.
MySQL также поддерживает и двоичные литералы (тоже в двух нотациях). Т.е. можно указывать значение поля bits в виде двоичного кода, как это сделано в описании, при этом старшие незначащие нули записывать необязательно, например: 0b10000.
Как лучше использовать mysqli_set_charset внутри функции подключения? Мне это нужно, чтобы в БД занести кириллицу правильно.
Если вы не контролируете в полной мере настройки сервера баз данных, использование set_charset обязательно. Функция подключения может быть такой:
В версии 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_' соответственно.
Вышла версия 3.10, юбилейная, т.к. движку сегодня исполняется 10 лет!
Упомянутые в предыдущем комментарии константы решила пока не включать в код. При необходимости вы можете сделать это самостоятельно. Итак, список изменений:
добавлена переменная $table с замыканием для «вычисления» имени таблицы (смотрите пример использования в предыдущем комментарии);
изменен порядок выполнения проверки адреса запроса по заданному шаблону и соединения с базой данных, так что теперь можно добавлять дополнительные проверки адреса в ту же структуру ветвления, находясь вне контекста открытого соединения с базой данных, например «перехватить» запрос к главной странице без соединения с базой данных следующим образом:
изъято использование переменной $_SERVER['QUERY_STRING'], для получения значения переменной $pn добавлено использование переменной $_GET['p'];
незначительно изменены правила внешнего перенаправления в файле .htaccess, прилагаемом к движку.
Рассылку запущу сегодня или в один из ближайших дней.
Добавлена новая услуга «Подписка на рассылку G-Drive для изучающих PHP/MySQL» стоимостью 10 руб. Предзаказ можно сделать через форму обратной связи, указав в тексте сообщения фразу «Интересует пакет №14».
Внимание! В 2021 году стоимость подписки будет увеличена до 100 руб.
В связи с вероятным переходом в следующем году на новую схему подключения файлов рекомендую не использовать настройку с одновременным подключением d- и h-файлов. Поддержка последовательного подключения этих файлов, возможно, сохранится, но только для совместимости с кодом наподобие
В новой схеме будут использоваться только два бита поля bits, а не три, как сейчас: 002 (0) – подключить общий шаблон, 012 (слагаемое 16) – подключить вложенный шаблон модуля и общий шаблон, 102 (слагаемое 32) – подключить основной код модуля, 112 (слагаемое 48) – подключить основной код модуля в контексте открытого соединения с базой данных. Подключение шаблонов в последних двух случаях, возможно, будет происходить на основе значений, возвращаемых при подключении основного кода модуля.
В новой схеме биты 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.09. В рассылку также включена pre-версия для тех, кто пока не готов к переходу на новую схему подключения файлов.
Материалы блога будут постепенно обновляться с учетом новой схемы подключения файлов.
Неплохо. Режим подключения файлов хорошо читается по значению поля bits: 0+ - x0, 16+ - x1, 32+ - x2, 48+ - x3. Это если не использовать зарезервированные биты.
MySQL поддерживает шестнадцатеричные литералы (в двух нотациях), поэтому номер режима подключения файлов можно указывать в виде старшей цифры двузначного шестнадцатеричного числа, определяющего значение поля bits, например режим x1 может быть установлен посредством значения 0x10. Для установки режима x0 можно не указывать старшую цифру, но только в нотации, не требующей четного количества шестнадцатеричных цифр в числе, например можно использовать значение 0x0, где единственный ноль справа от икса – это младшая цифра, не относящаяся к режиму подключения файлов.
MySQL также поддерживает и двоичные литералы (тоже в двух нотациях). Т.е. можно указывать значение поля bits в виде двоичного кода, как это сделано в описании, при этом старшие незначащие нули записывать необязательно, например: 0b10000.
Как лучше использовать mysqli_set_charset внутри функции подключения? Мне это нужно, чтобы в БД занести кириллицу правильно.
Если вы не контролируете в полной мере настройки сервера баз данных, использование set_charset обязательно. Функция подключения может быть такой:
В версии 3.10 появится дополнительная переменная с замыканием для «вычисления» имени таблицы. Предположительно переменная будет называться $table. Она может использоваться прямо в PHP-строке, например:
Также для данного замыкания будут зарезервированы или определены константы ROOT_TABLE и TABLE_PREFIX со значениями по умолчанию 'site_categories' и 'site_' соответственно.
Вышла версия 3.10, юбилейная, т.к. движку сегодня исполняется 10 лет!
Упомянутые в предыдущем комментарии константы решила пока не включать в код. При необходимости вы можете сделать это самостоятельно. Итак, список изменений:
изменен порядок выполнения проверки адреса запроса по заданному шаблону и соединения с базой данных, так что теперь можно добавлять дополнительные проверки адреса в ту же структуру ветвления, находясь вне контекста открытого соединения с базой данных, например «перехватить» запрос к главной странице без соединения с базой данных следующим образом:
Рассылку запущу сегодня или в один из ближайших дней.
Добавлена новая услуга «Подписка на рассылку G-Drive для изучающих PHP/MySQL» стоимостью 10 руб. Предзаказ можно сделать через форму обратной связи, указав в тексте сообщения фразу «Интересует пакет №14».
Внимание! В 2021 году стоимость подписки будет увеличена до 100 руб.