2019-1-11 V5.0.24
Данное обновление включает в себя безопасное обновление, рекомендовано обновиться.
- Улучшена связь метода
save
- Улучшено моделирование данных верификации
- В коллекцию добавлен метод
values
- Улучшен уникальный метод верификации
- Улучшен метод
method
класса Request
2018-12-9 V5.0.23
Основное обновление данного выпуска связано с безопасностью, рекомендовано как можно скорее обновиться до последней версии.
- Поддержка запросов к диапазонам моделей
- Поддержка агрегирующих запросов
DISTINCT
- Улучшение параметров проверки замыканий
- Поддержка указания названия полей промежуточной таблицы многими ко многим связями
- Поддержка после/до проверки указания поля для проверки
- Улучшение многими ко многим связями
- Улучшение класса верификации
- Добавлены правила верификации
afterWith
и beforeWith
для сравнения датовых полей
- Улучшение сообщений ошибок правил
- Улучшение повторного соединения при отключении сети
- Исправлена проблема с методом
destroy
для мягкого удаления
- Исправлен метод
save
модели при пустой переменной data
, данные не проверяются
- К модели добавлен метод
replace
- Для
MorphOne
добавлен метод make
для создания экземпляра объекта связи
- Улучшение типа возвращаемых значений метода
count
- Улучшение регулярного выражения для агрегирующего запроса
- Улучшение драйвера
sqlsrv
- Улучшение метода
save
связи
- Исправление получения имени контроллера## 2018-10-22 V5.0.22
В данном выпуске была добавлена поддержка JSON-формата логов и внесены изменения для повышения безопасности.
- Отключение кэширования маршрутов в режиме отладки
- Улучшение класса Log для поддержки JSON-логов
- Улучшение безопасности агрегирующих запросов
- Улучшение типа возвращаемых значений метода count
2018-09-07 V5.0.21
В данном выпуске были исправлены некоторые известные проблемы, улучшена поддержка Swoole и добавлена возможность кэширования маршрутов.
- Добавлена возможность кэширования маршрутов
- Улучшение порта генерации URL
- Улучшение драйвера кэширования
- Улучшение обработки кэша методом value
- Исправление метода insertAll класса Builder
- Улучшение поддержки Swoole (см. пример использования xavier-swoole)
2018-05-11 V5.0.20
В данном выпуске были исправлены некоторые известные проблемы.
- Поддержка передачи объекта Expression в качестве условия метода join
- Улучшение метода parseKey драйвера
- Улучшение метода host класса Request
- Предупреждение об использовании exp выражения для обновления данных
- Исправление запроса
- Улучшение обновления промежуточной модели многими ко многим связью
2018-04-14 V5.0.18
Этот выпуск в основном исправляет некоторые ошибки предыдущего выпуска и улучшает строгость запросов/внесения данных с использованием выражения exp
.* Исправлено совместимое использование метода field
со звездочкой;
- Исправлены методы
inc/dec
;
- Исправлены методы
setInc/setDec
;
- Улучшен метод
insertAll
;
- Улучшен метод
parseTime
;
- Улучшена строгость запросов/внесения данных с использованием выражения
exp
;
2018-4-12 V5.0.17
Этот выпуск включает несколько исправлений и улучшений, а также безопасное обновление.
- Улучшен метод
create
класса Response;
- Улучшен метод
inc/dec
запроса;
- Поддержка использования имени оператора метода напрямую при рендере шаблонов по умолчанию;
- Улучшение управления представлениями;
- Улучшен метод ip класса Request, поддерживающий настройку прокси;
- Исправлен метод
create
класса request;
- Исключение выбрасывается при использовании закрытых запросов с
cache(true)
;
- Улучшение автоматической загрузки компонентами Composer;
- Добавлен класс Expression и связанные методы;
2018-3-26 V5.0.16
Этот выпуск включает несколько исправлений и улучшений, а также безопасное обновление, поэтому рекомендуется его установка.* Улучшение генерации URL;
- Улучшение производительности автоматической загрузки компонентами Composer;
- Улучшение однозначного запроса;
- Улучшение кэширования запросов;
- Улучшение метода field;
- Оптимизация класса Template;
- Исправление параметра пагинации;
- Улучшение автоматического распознавания шаблона по умолчанию;
- Улучшение запросов класса Query;
- Улучшение класса Collection;
- Улучшение метода
readTransform
класса модели для обработки сериализованного типа;
- Улучшение отображения трассировки;
- Поддержка автоматической очистки логов файлов;
- Улучшение проверки повторного подключения;
- Улучшение метода верификации;
- Исправление определения таблицы массива методом view класса Query;
- Улучшение привязки параметров;
- Улучшение параллельного удаления кэша файла;
- Улучшение безопасности обновления методов
inc/dec/exp
;
- Добавлен конфигурационный файл консоли;## 2018-1-31 V5.0.15
Этот выпуск включает несколько улучшений и исправлений.
- Улучшен класс View;
- Улучшен метод chunk;
- Улучшено синтаксическое оформление выражений в движке шаблонов;
- Улучшены многократные вызовы самосвязей;
- В определении связи добавлен метод
selfRelation
, который позволяет указывать, является ли это самосвязью;
- Улучшен метод
inc
и dec
кэширования типов файлов, не меняющий срок действия кэша;
- Улучшен мягкий удаление, позволяющий выключить свойство
deleteTime
;
- Улучшен метод объединённого запроса
union
;
- Улучшено кэширование запросов;
- Оптимизировано создание пустых директорий при работе с кэшированием файлов;
- Улучшено решение проблемы конкурентного доступа к записи логов;
- Исправлен метод
MorphTo
связи;
- Улучшен метод
join
самосвязывания;
- Улучшен анализ тега
case
;
- Улучшен метод URL для поддержки конфигурации
url_convert
;
2018-1-1 V5.0.14
Версия V5.0.14 теперь лучше поддерживает составные первичные ключи, улучшена совместимость с PHP7 и устранены некоторые проблемы базы данных. Основные изменения:
- Поддержка составных первичных ключей;
- Улучшенная совместимость с PHP7;
- Устранение некоторых проблем базы данных.* Улучшена проверка уникальности в классе
Validate
- В класс
Validate
добавлен метод checkRule
для статической проверки нескольких правил
- Улучшен метод
save
для множественных связей
- Улучшен объект
pivot
для множественных связей
- Исправлена задержка записи при использовании метода
setDec
- Добавлен второй параметр для методов
max
и min
для установки обязательного преобразования в число
- Улучшен класс
View
- Улучшено соединение с самим собой
- Улучшены объединённые запросы
- Улучшен класс
Url
- Улучшена регистрация одноимённых маршрутов для разных запросов
- Улучшен класс
Builder
для обработки пустых массивов
- Улучшена замена шаблонов
- Изменён метод
hasWhere
класса BelongsTo
- Улучшено правило компиляции кэша шаблона с добавлением метки для макета
- Улучшен метод
insertAll
- Поддержка составного первичного ключа в методе
chunk
- Улучшен класс
Error
для совместимости
- Улучшен метод
save
класса model
для поддержки составного первичного ключа с автоинкрементом
- Улучшен метод
save
для поддержки составного первичного ключа
- Улучшен метод
insertAll
для MySQL
- Улучшена работа Redis с несколькими базами данных через долгое соединение## 2017-12-12 V5.0.13
V5.0.13
включает улучшения модели и логирования.
[База данных и модель]
- Улучшен метод
save
класса Model
для Oracle
- Улучшено создание экземпляров промежуточной таблицы
- Улучшен класс
Pivot
- Метод
saveAll
модели теперь поддерживает isUpdate
- Класс модели добавляет метод
force
для принудительного обновления всех данных
- Автоматическое удаление добавляет поддержку удаления одного ко многим
- Улучшено повторное использование данных в запросах
hasWhere
- Улучшено подключение
with
для одного ко многим с поддержкой полей
- Метод
saveAll
модели теперь поддерживает возврат набора данных с чтением resultSetType
- Улучшено определение устаревших полей
- Метод
hasWhere
модели добавляет параметр fields
- Улучшено управление повторным подключением при ошибке отключения
- Исправлены методы
inc
и dec
класса Query
для решения проблем с ключевыми словами MySQL
- Исправлены ошибки в объекте набора данных
[Другое]* Добавлено положение hook app_dispatch
- По умолчанию параметр httponly класса Cookie установлен как false
- Добавлен параметр single в классе File для логирования одного файла
- Логический файл поддерживает настройку размера
- Улучшено логирование IP-адреса
- Для Redis-кэширования используется serialize вместо JSON-сериализации
- Улучшено управление ошибками
- Улучшена верификация загружаемых файлов
- Исправлен класс Redis
- Улучшен метод clear класса File для кэширования
- Нормализация кода согласно стандартам PHP
- Улучшение совместимости с PHP 7.2
- В режиме отладки не читаются кэшированные поля
- default_filter теперь можно настроить в модуле## 2017-11-06 V5.0.12
V5.0.12
— исправительная версия, которая включает исправления и улучшения после выпуска предыдущей версии. Поддержка нескольких языков для классов загрузки и валидации;
Добавление поддержки исключения и отмены полей в модели;
Улучшение метода batch processing для insertAll;
Улучшение поддержки привязки параметров к типам данных enum;
Внесение исправлений на основе отзывов сообщества;
[База данных и модели]
Улучшение метода getRealSql класса Connection;
Улучшение метода append для поддержки bind для однозначной связи one-to-one;
Улучшение запроса whereTime;
Улучшение метода destroy класса model;
Исправление softdelete;
Исправление метода chunk для времени;
Добавление метода push класса Collection;
Улучшение метода alias;
Исправление обработки метода append для моделей;
Улучшение метода appendRelationAttr;
Улучшение HasManyThrough связей;
Улучшение MorphTo связей;
Добавление поля disuse для отмены в модели;
Добавление метода except для исключения полей;
Исправление метода has;
Улучшение поддержки привязки параметров к типам данных enum;
Улучшение метода batch processing для insertAll;
[Другое]* Улучшение Loader класса для поддержки многоуровневого контроллера и валидатора;
- Поддержка нескольких языков для сообщений валидации;
- Поддержка нескольких языков для ошибок класса File;
- Обработка исключений при рендере шаблонов;
- Исправление REST контроллеров;
- Улучшение trace драйвера;
- Улучшение метода remember класса Cache;
- Улучшение urlencode для url_common_param;
- Улучшение класса Url;
- Улучшение конфигурационного параметра exception_handle для поддержки замыканий;
- Проверка RUNTIME_PATH перед выполнением команды кэширования маршрутов;
- Изменение поведения декремента для пустых значений в CacheDriver::dec;
- Оптимизация отображения для мобильных устройств;
- Улучшение поддержки плагина JSON-Handle;
- Улучшение метода get для Redis;
- Улучшение метода host класса Request;## 2017-09-08 V5.0.11
5.0.11 является безопасным и исправленным выпуском, который включает несколько исправлений и улучшений с момента последнего выпуска, а также устраняет некоторые потенциальные проблемы безопасности, в том числе:
- Улучшение кэширования драйверов;
- Улучшение базовых запросов к данным;
- Улучшение класса генерации URL;
- Поддержка указания времени истечения для кэша;
[База данных и модели]
- Улучшение базового драйвера;
- Улучшение метода group для решения конфликтов ключевых слов полей;
- Исправление проблем с возвратом null для агрегирующих запросов;
- Улучшение принудительного повторного соединения для класса Db;
- Улучшение привязки свойств для связей;
- Исправление повторного соединения для транзакций при отключении;
- Исправление условий запроса объектов;
- Добавление метода clear для класса Db;
- Улучшение запроса null для массивов условий;
- Улучшение метода chunk для класса Query для поддержки установки сортировки;
- Улучшение метода has для связей HasOne и HasMany;
- Улучшение удаления связей для мягкого удаления;
- Улучшение многократных условий запроса одного поля;### [Другое]* Поддержка указания времени истечения кэша (
DateTime
);
- Улучшение генерации URL с поддержкой портов;
- Улучшение сообщений об ошибке
RouteNotFound
;
- Улучшение глобального совпадения полного маршрута в группах маршрутизации;
- Исправление проблем с отображением ошибок при некоторых правилах проверки;
- Поддержка вывода XML ответов для набора данных и моделей;
- Улучшение тринарной операции меток шаблонов;
- Улучшение сообщений об ошибках при отсутствии контроллера;
- Поддержка получения переменной
route
в функциях помощника input
;
- Поддержка чтения дополнительных конфигурационных параметров из файла конфигурации;
- Улучшение класса пагинации;
- Исправление проблемы повторного пространства имён Trait;
- Исправление метода
env
класса Request
;
- Приоритетное использование настроек нескольких языков из cookies;
- Фильтрация недействительных меток кэша при получении меток кэша;
- Исправление одного бага при массовой регистрации маршрутов;
- Поддержка использования замыканий для определения параметра
render
в конфигурации exception_handle
;
- Поддержка установки меток кэша для запросов кэширования;
- Добавление механизма параллельного блокирования в метод
remember
класса кэширования;
- Улучшение поддержки SWF в классе загрузки файлов;
- Улучшение метода
prefix
класса Session
.## 2017-07-04 V5.0.10
5.0.10 — это исправленная версия, содержащая безопасное обновление, рекомендовано обновиться. Основные изменения:
- Множество улучшений для баз данных и моделей;
- Добавление новых поведений слушателей;
- Поддержка Response установки для маршрутов;
- Улучшение защиты чувствительной информации базы данных в режиме отладки;
[Базы данных и модели]
- Исправление ошибки удаления таблицы при использовании JOIN;
- Исправление удаления удалённого отношения один ко многим;
- Поддержка REPLACE в методе insertAll;
- Исправление получения промежуточной таблицы по умолчанию для отношений многие ко многим;
- Улучшение обновления поля
updated_at
после обновления модели;
- Добавление метода
removeRelation
в класс модели;
- Добавление методов
setInc
, setDec
и autoWriteTimestamp
в класс модели для динамического управления временными метками;
- Улучшение обработки отключения соединения в методах драйвера;
- Улучшение обновления данных в отношении многие ко многим;
- Улучшение запросов BelongsToMany;
- Исправление методов
value
и column
класса Query;
- Улучшение удаления дубликатов в запросах IN;
- Исправление передачи значений в методах scope класса модели;
- Изменение местоположения проверки
before_update
в методе save класса модели;
- Поддержка третьего аргумента для методов модификаторов и получателей данных.### [Остальные изменения]* По умолчанию отключена отладочная модель
- Исправлена ошибка при временной загрузке конфигурационной директории extra
- Добавлен мониторинг завершённого поведения записи лога
log_write_done
- Улучшено условие проверки каталога для создания общих файлов в классе Build
- Добавлен мониторинг поведения
response_send
- В маршрутах добавлен параметр response для привязки поведения обработки ответа
- Улучшены параметры передачи redirect
- Улучшена работа с булевыми значениями переменных окружения
- Улучшен класс Url для передачи доменного имени
- Исправлено создание файлов через командную строку
- Улучшено создание URL через командную строку
- Добавлен параметр
app_host
для установки базового адреса URL по умолчанию
- Улучшено определение метода
isSsl
класса Request для поддержки CDN
- Добавлен параметр конфигурации
record_trace
для записи информации trace в журнал## 2017-05-20 V5.0.9
5.0.9 — это исправленная версия, рекомендованная для обновления. Основные изменения включают:
[База данных и модели]* Исправление автоматической записи ассоциаций
- Исправление определения изменения данных моделей для пустых значений
- Исправление возвращаемого значения метода
useSoftDelete
класса Query
- Исправление проблемы определения массива однозначной связи вложенной ассоциации
- Исправление бага кэширования при использовании ручного привязывания параметров
- Улучшение одного места класса базы данных, где отсутствует возможность вложенного запроса
- Улучшение механизма повторного соединения с базой данных при разрыве соединения
- Улучшение метода
appendRelationAttr
класса модели
- Улучшение метода
destroy
класса модели, чтобы он не выполнял удаление при передаче пустого массива
- Улучшение вывода связанных данных многие-ко-многим
- Улучшение метода
save
класса модели для поддержки метода allowField
- Улучшение метода
toArray
класса пагинации, добавление общего колич�数字需要翻译成数字形式,但这里是一个描述性的表达,不需要改变。
ination数量
-
Добавление поддержки вложенного подзапроса в сравнении операторов
-
По умолчанию помощник db
больше не требует обязательного повторного соединения
-
Улучшение указания полей для запроса belongsToMany
-
Добавление метода each
класса пагинации### [Другое]
-
Исправление распознавания регистров правил маршрута групп
-
Исправление генерации разделения логов командной строки
-
Восстановление параметров маршрутов при создании URL, которые не проходят через urlencode
-
Улучшение механизма фильтрации класса Request
, поддерживающего регулярные выражения
-
Улучшение класса Response
для поддержки ручного установления типа контента
-
Исправление ошибки незадекларированного помощника функции в шаблоне исключения
2017-04-28 V5.0.8
Основные коррективы
- Улучшение ассоциаций моделей
- Улучшение записи логов
- Добавление полиморфной однозначной связи
- Исправление некоторых багов, сообщённых сообществом
[Запросы и маршруты]
- Исправление метода
cookie
класса Request
для поддержки префиксов
- Улучшение метки кэша глобального кэширования запросов
- Улучшение метода
param
класса Request
- Исправление псевдонимных маршрутов### [Модели и база данных] Улучшение проверки обновления данных модели
- Улучшение метода
column
в классе Query
- Устранение проблемы множественного создания условий мягкого удаления при использовании замыканий запроса
- Добавление метода синхронизации данных в связи типа
belongsToMany
- Поддержка статического вызова диапазонов запросов
- Добавление полиморфной связи один-ко-одному (
MorphOne
)
- Улучшение связи типа
BelongsTo
- Улучшение поддержки добавления и отмены связанных данных в полиморфных связях
- Улучшение связи типа многие-ко-многим с поддержкой пользовательских моделей промежуточных таблиц без использования полного имени таблицы
- Улучшение преобразования типов вещественных чисел для избежания появления запятых
- Изменение значения, возвращаемого методом
save
ассоциированной модели
- Первый параметр метода
get
класса модели должен быть обязательным; если передается null, то возвращается null
- Улучшение метода
save
модели для случаев, когда данные не требуют обновления
- Добавление метода
useSoftDelete
в класс Query
, который позволяет отдельно устанавливать условия мягкого удаления
- Переопределение методов
selectOrFail
и findOrFail
в классе BelongsToMany
- Переопределение методов
select
, find
и paginate
в классе BelongsToMany
- Добавление свойства
parent
в модель и объект Pivot
- Поддержка установки промежуточной таблицы в связи типа многие-ко-многим* Улучшение ключевых слов в методе
view
класса Query
- При работе с основной и дополнительной базами данных использование транзакций всегда выполняется на основной базе данных
Другие изменения* Улучшение метода get
в классе Cookie для получения всех значений
- Добавление параметра
config
в команду schema
, поддерживающего передачу конфигурации соединения с базой данных
- Улучшение метода
store
в классе кэша для временного использования
- Внесение исправлений в помощник функций кэша для поддержки параметров
options
- Исправление проблемы генерации карты классов при отсутствии директории
EXTEND_PATH
при выполнении команды optimize:autoload
- Поддержка создания кэшированной карты классов для пользовательских корневых пространств имён
- Обеспечение возможности сравнения полей модели с другими полями
- Исправление ошибки при установке текущего контекста с помощью
Session::prefix('xxx')
- Улучшение команды
optimize:schema
- Исправление проблемы удаления файлов из многоуровневых директорий при использовании команды
clear
- Улучшение чтения основного языка и автоматического определения языков
- Улучшение формата записи логов и реализация реального времени записи логов в командной строке
- Исправление ошибки при работе с дефолтными значениями шаблонных меток
- Улучшение поддержки полного домена при создании URL
- Улучшение команды
Clear
для предотвращения удаления файла .gitignore
- Исправление метода
inc
в драйвере кэширования Memcache
Изменения* При наличии пользовательского пространства имен приложений, параметр конфигурации app_namespace
следует заменить на константу APP_NAMESPACE
в точке входа.
- Для таблиц промежуточного хранения в связях многие ко многим не требуется добавление префикса таблиц.
- После применения метода scope в моделях можно использовать только методы запроса к базе данных, а не методы модели.
24 февраля 2017 года версия 5.0.7
Основные изменения
Основные изменения данной версии направлены на исправление ошибок и улучшения:
- Улучшение глобального кэширования запросов для поддержки поддоменов;
- Улучшение механизма автоматической обновляемости кэша данных;
- Поддержка указания имени свойства для статистики в связях;
- Поддержка массивного способа для вложенных связей моделей;
- Поддержка методов
has
и hasWhere
для связи HasOne
;
- Разрешение установки пустого значения для параметров
ext
и deny_ext
в маршрутах (что означает запрет на использование любых расширений или обязательность использования расширений);
Исправлено* Исправление SQL-синтаксических ошибок при пустых условиях типа IN/NOT IN
- Исправление метода
toArray
класса Pagination для поддержки режима минимизации
- Исправление метода
delete
класса Model для работы с несколькими первичными ключами
- Исправление поддержки мягкого удаления для MongoDB
- Исправление возможной ошибки в классе Connection
- Улучшение механизма кэширования метода
find
класса Query
- Исправление связи BelongsTo
- Исправление предваренной загрузки однозначных связей через JOIN
- Исправление возможной ошибки предупреждения метода
insert
класса Query
- Исправление конфликта использования Collection в классе Model
- Исправление метода
hasWhere
класса Model
- Исправление поддержки параметра
ext
при создании URL
- Удаление пустых директорий при очистке кэша файлов
- Исправление метода
parseUrlPath
класса Route### Настройки:* По умолчанию отключена безопасность сессий (secure
) — этот параметр можно включить только при использовании HTTPS.
2017-02-07 V5.0.6
Основные изменения:
Основные изменения связаны с исправлением ошибок и оптимизациями (обновление возможно без проблем):
- Добавлен механизм автоматического восстановления соединения с базой данных;
- Улучшены параметры обратного вызова событий запросов;
- Усовершенствован механизм автоматического кэширования данных;
- Добавлена возможность автоматического преобразования временных полей;
- Обновлены расширения
MongoDB
и Oracle
до последней версии основной библиотеки;
[База данных и модели]* Исправлен метод has
для связи hasMany
;
-
Удалены некоторые конфигурационные параметры базы данных для избежания влияния на расширения базы данных;
-
Усовершенствовано значение возвращаемого значения метода attach
для отношений многим ко многому;
-
Добавлен механизм автоматического восстановления соединения с MySQL и переключатель;
-
Усовершенствован механизм кэширования данных в классе Query
;
-
Усовершенствованы параметры обратного вызова событий запросов в классе Query
;
-
Усовершенствован механизм автоматического обновления кэша в классе Query
;
-
В классе Model
добавлен метод readonly
;
-
Усовершенствованы методы has
и hasWhere
в классе Model
;
-
Усовершенствованы методы get
и all
в моделях, второй параметр указывает на использование кэша;
-
Исправлены SQL-синтаксические ошибки, возникающие при пустых условиях запроса в замыканиях;
-
Усовершенствован метод setBuilder
в классе Query
, чтобы избежать проблем с поиском генератора после использования пользовательского соединителя;
-
Удалён устаревший атрибут resultSetType
из класса Connection
;
-
Усовершенствован метод close
в классе Connection
;
-
Исправлен метод bindParam
в классе Connection
для поддержки хранимых процедур;
-
Конфигурация параметра datetime_format
теперь может быть установлена как false
для отключения автоматического преобразования временных полей;
-
Усовершенствованы проблемы совместимости с мягкими удалениями для MongoDB;### [Другое]
-
Усовершенствован метод создания URL в классе Url
, когда корневой адрес равен /
;
-
Добавлен параметр with
в помощник функции redirect
и методе redirect
контроллеров;
-
Добавлены правила исключения глобального кэширования запросов, добавлен параметр конфигурации request_cache_except
;
-
Метод store
класса Cache
теперь позволяет передачу null значений для получения текущего драйвера кэширования;
-
Усовершенствованы правила проверки IP-адресов в классе Validate
;
2017-01-23 V5.0.5
Основные изменения:
Основные изменения связаны с улучшением слоя доступа к данным и связей моделей:
- Добавлены быстрые методы для выполнения запросов и установки параметров;
- Добавлена возможность статистики связей;
- Добавлена возможность отложенного предварительного загрузки связей;
- Добавлена возможность автоматического записи и удаления однозначных связей;
- Усовершенствованы запросы хранимых процедур;
- Усовершенствован вывод связанных данных;
- Улучшена производительность запросов;
- Автоматическое форматирование временных полей моделей;### [Запросы и маршруты]
- Улучшение проверки суффиксов в определении маршрутов
- Метод
rest
класса Route
поддерживает переопределение определений
- Улучшение методов
put
и post
класса Request
для приема параметров в формате json
- Класс
Request
получил метод contentType
- Улучшение метода
setRule
класса Route
- Улучшение метода
create
класса Request
- Улучшение влияния методов маршрута до контроллерского класса на использование шаблонов по умолчанию
- Исправление ошибки метода
build
класса Url
, возникающей после определения псевдонима маршрута
[База данных и модели]
- Добавлена функциональность ассоциативной статистики
- Добавлено автоматическое внесение данных при однозначной ассоциации
- Исправлен метод
delete
в модели агрегации
- Улучшен метод
useGlobalScope
класса Model
- Поддержка установки типа даты в виде имени класса для класса
Model
- В классе
Query
добавлены методы data
, inc
, dec
, exp
для быстрого изменения данных; параметры методов insert
и update
могут быть пустыми; чтение данных через метод data
- Оптимизация производительности запросов в классе
Connection
- Исправлен метод
parseOrder
класса Builder
- Исправлен метод
attach
класса BelongsToMany
- Улучшен метод
attach
класса BelongsToMany
с поддержкой массового внесения данных
- Улучшен метод
saveAll
класса BelongsToMany
с добавлением третьего параметра для указания согласованности дополнительных параметров* Поддержка многократного вызова метода order
класса Query с объединением условий
- Улучшение метода
count
для поддержки групповых запросов
- Добавлена проверка для автоматического внесения времени
- Улучшен метод
writeTransform
класса Model
- Улучшено управление временными метками в классе Model
- При записи объекта данных проверяется наличие метода
__toString
- Улучшен метод
getFields
класса MysqlDriver
- Улучшена автоматическая сериализация временных меток
- Поддержка массивов как условий
LIKE
- Автоматическая сериализация временных меток с использованием формата времени
- Улучшение запросов для повторного использования одного поля с помощью оператора OR
- Исправление объединения условий для NULL-запросов
- Улучшение метода
paginate
класса Query с возможностью передачи первого параметра в виде массива
- Улучшение возврата объектов набора данных от метода
select
класса Query; нативные запросы больше не поддерживают возврат объектов набора данных
- Добавлен ряд методов быстрого запроса, таких как
whereNull
, whereIn
- Изменён метод
fetchPdo
- Улучшение поддержки вызова хранимых процедур; улучшение механизма вызова
getRealSql
; улучшение поддержки привязки параметров для полей с дефисами
- Добавлен параметр конфигурации базы данных
result_type
для установки типа возвращаемых данных; переименование параметров методов * Улучшение метода whereTime
класса Query для поддержки большего количества выражений времени и дат (по умолчанию используется условие "больше" указанного времени)
- Отменены значения по умолчанию для параметров методов
min
, max
, sum
, avg
- В классе Query добавлен метод
getPdo
для возврата объекта PDOStatement
- Улучшение запросов с использованием текущих дат
- Улучшение получения связанных свойств
- Улучшение проблемы повторного выполнения условий запроса в определении связи
- Улучшение поддержки привязки параметров для кириллических полей
- Улучшение метода
insertAll
класса Builder с поддержкой null и объектных данных
- Улучшение типов привязки параметров с поддержкой автоматической привязки типа
bit
- Метод
model
класса Connection переименован в getQuery
- Оптимизация метода
__call
класса Connection
- Исправление модели агрегации
- По умолчанию предварительная загрузка однозначной ассоциации теперь использует метод IN
- Добавлен помощник функций
collection
для преобразования наборов данных
- Добавлен помощник функции
loadRelation
для поздней предварительной загрузки массивов
- Улучшение метода
has
класса Model с поддержкой второго параметра в виде массива или замыкания, что позволяет отказаться от использования hasWhere
- Метод
relation
теперь поддерживает запросы к вложенным ассоциациям* Добавлен think\model\Collection
как объект коллекции для выполнения запросов к наборам данных моделей
- Отменён параметр
alias
при определении отношений (только morphTo
остаётся)
- Метод
delete
класса Model теперь поддерживает удаление без наличия первичного ключа
- Метод
allowField
класса Model теперь поддерживает строки, разделённые запятой
- Улучшена автоматическая привязка параметров при записи данных для решения проблемы путаницы названий параметров
- По умолчанию имя свойства для предварительной загрузки отношений теперь используется в нижнем регистре с подчеркиванием
- Методы
with
и relation
класса Query теперь поддерживают повторное вызов
- Класс Collection получил новые методы
hidden
, visible
и append
- Исправлена проблема принудительного удаления при использовании мягкого удаления
[Другое]* Валидация правил unique
теперь поддерживает указание полной модели класса, а также по умолчанию будет проверять наличие модели; если модель отсутствует, будет проверена таблица данных.
- Улучшены методы
model
, controller
и validate
класса Loader
для прямой передачи имени класса для его экземплирования.
- Класс
Session
получил новые безопасные опции httponly
и secure
.
- Теперь можно использовать пользовательский драйвер
Output
для адаптации к вызову других командных строковых команд в режиме командной строки.
- Улучшено решение проблемы загрязнения параметров метода
action
класса loader
.
- Валидатор класса
Validate
теперь использует равенство для проверки поля confirm
.
- Улучшено управление ошибками в классе
Validate
.
- Исправлено поведение валидатора класса
Validate
при проверке логических значений.
- Улучшен функционал помощника
cookie
для поддержки префиксов.
- По умолчанию включена поддиректория кэша для файла кэширования для предотвращения проблем производительности из-за большого количиства файлов.### [Изменения]
- Метод
model
класса Connection
переименован в get_query
.
- Нативные запросы больше не поддерживают возврат объекта набора данных.
- Тип возвращаемых значений пагинационного запроса стал
think\Paginator
(синтаксис остается прежним).
- Полевые значения времени и даты моделей автоматически форматируются при выводе, дополнительная обработка не требуется.
- Класс
Session
добавил параметры secure
и httponly
, которые по умолчанию установлены как true.## 2016-12-20 V5.0.4
Основные изменения:
- Переработана связь моделей с добавлением поддержки полиморфизма для связи один ко многим;
- Поддержка одного поля для нескольких вызовов различных условий запроса;
- Добавлена поддержка событий CRUD для базы данных;
- Поддержка передачи дополнительных параметров при маршрутизации к классу и контроллеру;
- Поддержка глобального назначения переменных шаблонов;
- Поддержка независимой установки объекта набора данных для модели;
- Улучшение журналирования для командной строки и отладки;
- Улучшение поведения методов класса
Hook
.### [Запросы и маршруты]
- Поддержка кэширования запросов для отдельных модулей.
- Метод
post
класса Request
теперь поддерживает получение данных запроса в формате JSON.
- Поддержка передачи дополнительных параметров при маршрутизации к методам класса и контроллеру.
- Улучшено правило автоматического поиска директорий для контроллеров.
- Улучшено кэширование запросов.
- Улучшено автоматическое привязывание параметров.
- Исправлены настройки кэширования запросов маршрута.
- Улучшено поведение метода
name
класса Route
.
[Базы данных и модели]
- Добавлены события запросов базы данных (CRUD).
- Улучшена работа с множественным обновлением таблиц при отсутствии полей.
- Улучшен метод
useGlobalScope
в классе Model
.
- Исправлено проблемное поведение подзапросов как имен таблиц.
- В классе
Model
добавлен атрибут resultSetType
, который позволяет указывать тип объекта набора данных (по умолчанию пустое значение возвращает массив).
- В классе
Model
добавлен метод toCollection
(автоматически вызывается).
- Изменено структурирование связанных моделей.
- Улучшены параметры метода предварительной загрузки
with
для поддержки нижнего регистра и подчеркиваний.
- Исправлен один из багов в работе с многими ко многим отношениями.
- Улучшены запросы для многого ко многому отношений.
- Поддержка полиморфных отношений одного ко многим.* Предварительная загрузка связанных запросов теперь поддерживает привязку свойств связанного объекта к текущей модели.
- Поддерживается добавление свойств связанных объектов к данным текущей модели.
- Предварительная загрузка однозначных отношений теперь поддерживает два способа JOIN и IN (по умолчанию используется JOIN).
- Улучшены запросы для многого ко многому отношений.
- Улучшены правила сравнения изменений при обновлении модели.
- Поддерживается несколько условий поиска для одного поля.
- Улучшены SQL-запросы лога.
- Исправлено переопределение псевдонима самой таблицы в методе
join
.
- Объединены атрибут
connection
класса модели и конфигурация базы данных по умолчанию.
- Улучшены автоматические параметры для условий
in
и between
.
- Улучшена поддержка методами Query класса объектов набора данных и сортировки связанных полей.
- Добавлены быстрые методы событий для модели.
- Улучшен метод
getTableInfo
класса Query для кэшированного чтения.
- Метод
saveAll
класса model теперь поддерживает вызов метода allowField
для фильтрации полей.
- Исправлен баг метода
whereTime
при использовании связанных запросов.
- Улучшены агрегирующие запросы класса Query.
- Метод
table
теперь поддерживает строковый формат подзапросов.
- Исправлены проблемы с правильным возвратом SQL в методах
count
и avg
при использовании fetchsql
.
[Другое]
- Улучшение логирования в командной строке.* Упрощение логирования при развертывании
- Добавление типа логов debug для записи только в режиме отладки
- Улучшение метода
parseTemplateFile
класса Template
- Улучшение метода
getRuleMsg
класса Validate
- Метод
error
контроллера по умолчанию возвращает пустую URL при AJAX запросах
- В архитектурных методах класса Validate добавлен параметр
field
, используемый для установки описаний проверяемых полей
- Улучшение метода
invokeMethod
класса App для поддержки внедрения зависимостей в архитектурных функциях
- Добавление метода
restore
класса RedirectResponse с возвращаемым значением
- Класс View получил статический метод
share
для статического присвоения переменных шаблонов
- Класс Validate получил метод
hasScene
для проверки наличия конфигураций верификации для определённого сценария
- Корректировка возвратного значения метода
destroy
для Redis и сессий
- Удаление суффиксов методов действий из передачи параметров пустыми методами действий
- Добавление типовых указаний при вызове request и view в контроллёре
- Улучшение помощника функции
input
для поддержки получения многомерных данных
- Класс Cache получил методы
pull
и remember
- Улучшение правила верификации
confirm
класса Validate для поддержки автоматической идентификации правил
- Улучшение определения ошибочных сообщений верификации
- Добавление замены правил для пользовательских сообщений об ошибках верификации класса Validate* Класс Cookie получил метод
permanent
для постоянного хранения
- Поддержка чтения шаблонов из корневого каталога представлений при рендере шаблона
- Улучшение метода exec класса Hook### [Изменения]
- Отказ от возможности установки объекта пользовательского набора данных в классе Db
- Отмена метода
fetchClass
класса Query
- Метод
error
контроллера по умолчанию возвращает пустую URL при AJAX запросах
- Отказ от использования нижнего подчеркивания для определения связанных методов, теперь используется camelCase
- Методы классов поведений должны использовать camelCase
2016-11-11 V5.0.3
Основные изменения:
- Улучшение кэширования запросов;
- Улучшение маршрутизации;
- Совершенствование баз данных и моделей;
- Поддержка захвата исключений с использованием рефлексии;
- Улучшение класса File;
- Исправление некоторых ошибок, найденных сообществом;### [Запросы и маршруты]
- Автоматическая регистрация маршрутов ресурсов записывает текущее использование идентификатора ресурса;
- Улучшение функциональности и определение кэширования запросов, поддерживающее глобальное автоматическое кэширование;
- Исправление проблемы регистрозависимости при автоматическом поиске контроллеров;
- Исправление автоматического поиска классов после привязки маршрута к пространству имен;
- Улучшение метода
parseRule
класса Route для замены переменных маршрута без удаления этих переменных;
- Улучшение автоматического поиска контроллеров;
- Класс Route получил методы
setOption
и getOption
для записи информации о параметрах маршрута во время его выполнения;
- Оптимизация группировки маршрутов;
- Улучшение генерации URL для группированных маршрутов;
[База данных и модели]* Поддержка метода однозначной связи с определением метода field
- Агрегирующие модели поддерживают установку свойства
field
- Улучшение метода
alias
в классе Query
- Улучшение методов
join
и view
класса Query с параметром таблицы
- Улучшение метода
where
класса Query
- Улучшение метода
paginate
класса Query с поддержкой метода order
- Улучшение методов
min
и max
класса Query с поддержкой типов даты
- Исправление метода мягкого удаления
withTrashed
- Оптимизация метода
getRealSql
класса Connection для генерации SQL### [ Другое ]
- Добавлены конфигурационные параметры
request_cache
и request_cache_expire
для глобального управления кэшированием запросов;
- Исправлена фильтрация массивов в помощнике функции
input
;
- Помощник функции
cache
поддерживает очистку кэша;
- Улучшено выполнение метода
load
класса Config
с обязательным преобразованием имени первого уровня конфигурации в нижний регистр;
- Исправлено повторное создание URL;
- В классе
File
исправлены проблемы распознавания загруженных файлов в некоторых средах;
- Улучшено выполнение пустых методов класса
App
;
- Генерация URL-адресов при развертывании домена не зависит от параметра конфигурации
url_domain_deploy
;
- Исправлены проблемы развертывания домена в классе
Url
;
- Поддерживается централизованное хранение шаблонов представлений вне модульных директорий;
- Помощник функции
cache
поддерживает метод remember
;
- Метод
input
класса Request
или помощник функции input
поддерживают передачу значения null
для параметра filter
, что указывает на отсутствие фильтрации.## 24 октября 2016 года V5.0.2
Основные изменения:
- Улучшение базы данных и моделей;
- Улучшение функционала маршрутизации;
- Добавлена поддержка конфигураций в формате YAML;
- Улучшение внедрения зависимостей;
- Улучшение класса
Session
;
- Улучшение класса
Cookie
;
- Улучшение класса
Validate
;
- Поддержка захвата исключений для рефлексивных классов;
- Исправление ошибок, сообщённых сообществом;### [Запросы и маршруты]
- Классы, использующие внедрение зависимостей, автоматически вызывают метод
invoke
, если он определён
- Метод
header
класса Request
теперь поддерживает пользовательские заголовки
- Прямое создание экземпляра класса
Request
запрещено
- Улучшен метод
ip
класса Request
- Правила маршрутов поддерживают определение через замыкания
- Параметры маршрута поддерживают проверку значений
ajax
и pjax
- Алиасы маршрутов поддерживают операции разрешения и исключения
- Улучшена генерация URL после привязки маршрута к домену
- Улучшена генерация маршрутов для поддержки маршрутизации до классов
- Поддержана конфигурация параметра
url_param_type
для маршрутизации
- Поддержка алиасов маршрутов
- Правила переадресации маршрутов поддерживают больше схем (
schema
)
- Алиасы маршрутов поддерживают определение отдельных методов запросов
- Улучшена генерация URL для группированных маршрутов
- Объединённые переменные правил маршрутов поддерживают определение разделителей
- Улучшена получаемость объединённых параметров маршрутов
- Правила маршрутов поддерживают отдельное определение разделителей URL, параметр маршрута —
param_depr
- Автоматический поиск контроллеров поддерживает случаи с пользовательским уровнем доступа к контроллерам
- Улучшена независимость маршрутов от регистра символов* Улучшена проверка наличия маршрутов для адресов маршрутизации### [База данных и модели]
- Улучшение метода join класса Query
- Улучшение привязки параметров метода пагинации класса Query
- Внесение исправлений в метод мягкого удаления
- Внесение исправлений в метод parseOrder класса Query
- Внесение исправлений в метод parseOrder драйвера sqlsrv
- Внесение исправлений в методы setInc и setDec класса Query
- Улучшение метода save класса Model для работы с первичными ключами, которые не являются автоинкрементными
- Привязка целочисленных полей к параметрам, если они пустые, запись значения по умолчанию 0
- Улучшение методов has и hasWhere класса Model
- Улучшение проверки кэширования метода value класса Query
- Улучшение метода join класса Query для поддержки подзапросов
- Улучшение использования методов table и alias класса Query
- Поддержка self-reference в методах preloading связи типа hasOne
- Улучшение метода parseKey класса Builder
- Улучшение парсинга методов join/alias/table класса Builder
- Улучшение глобального диапазона запросов
- Улучшение возвратов агрегирующих методов класса Query
- Улучшение чтения связанных свойств
- Улучшение ситуации, когда основной ключ модели и ключ связи совпадают
- Улучшение получения имени контроллера при активированном параметре class_suffix### [ Другое ]
- Класс Cache расширен методом remember для автоматической записи значений при отсутствии кеша
- Класс Session расширен методом flash для установки временно действующих значений
- Класс Session расширен методом flush для очистки текущих временно действующих значений
- Класс Session расширен методом push для обновления массивных данных
- Добавлена поддержка конфигурационного формата YAML
- Улучшено решение проблемы непойманного исключения рефлексии класса App
- Внесены исправления в операцию очистки функциями помощи сессий
- Улучшен метод image класса валидации
- Улучшен метод activeUrl класса валидации
- Улучшена работа пользовательских правил валидации
- Улучшено получение имени контроллера после автоматической поисковой загрузки
- Внесены исправления в метод import для загрузки библиотек из директории extend
- Внесены исправления в исключение "Failed calling XXX::jsonSerialize()" при использовании json_encode
- Улучшено решение проблемы одиночества методов model и validate класса Loader
- Улучшено логирование выполнения методов
- Улучшен парсинг переменных Think в движке шаблонов
- Улучшен метод load класса Lang
- Поддержка мультиязычия сообщений об ошибках валидации
- Улучшение константы ROOT_PATH
- Улучшение загрузки пакетов языка
- Улучшение получения переменных сессии и cookies в шаблонах, автоматическое определение префиксов* Добавлен метод
handler
для всех драйверов кеша для получения объекта управления (может быть null
для некоторых типов кеша)
- Класс
File
расширен методом __call
для совместимости с методами md5
и sha1
версии 5.0
- Улучшен метод
clear
файла кеша
- Класс
Lang
расширен методом setLangCookieExpire
для установки времени жизни cookie для мультиязычия
- Добавлен параметр конфигурации
route_complete_match
Изменения
Следующие свойства и методы моделей были переопределены с статических (static
) до динамических:* Свойство relationModel
агрегирующей модели
- Свойство
useGlobalScope
класса Model
- Глобальный метод диапазона запросов
base
был преобразован в динамический метод
- Атрибут мягкого удаления
deleteTime
2016-9-28 V5.0.1
Основные изменения:
[Запросы и маршруты]
- Улучшение методов
success
и error
класса Controller для распознавания адресов перехода с поддержкой большего количества схем
- Поддержка автоматического внедрения любых объектов в методах операций и архитектурных методах
- Добавление метода
getInput
класса Request для получения значений из php://input
- Поддержка внедрения объекта запроса при маршрутизации метода
- Улучшение метода маршрутизации класса Route для определения маршрута к классу
- Добавление метода
cache
класса Request для поддержки кэширования запросов
- При привязке к модулю маршрут продолжает проверяться первым
- Добавление параметра кэширования запроса в маршруте
- Исправление ошибки опциональных переменных в составных маршрутах### [База данных]
- Исправление чтения информации о полях таблиц базы данных
pgsql
.
- Улучшение метода
view
класса Query вторым параметром по умолчанию true для получения всех полей.
- Добавление параметра
query
в конфигурацию базы данных для настройки имени объекта запроса.
- Добавление свойства
query
в типы моделей для настройки имени объекта запроса, необходимого моделью.
- Улучшение чтения кэша полей таблиц.
- Улучшение генерации кэша полей таблиц для абстрактных моделей или моделей, не наследующих класс Model.
- Улучшение кэширования полей моделей для виртуальных моделей.
- Улучшение генерации кэша полей таблиц для поддержки создания кэша моделей модулей.
- Улучшение метода
save
агрегирующей модели для записи ключа.
- Упрощение определения свойства field класса модели, отмена методов
allowField
и setFieldType
класса Query и связанных свойств.
- Улучшение генерации кэша полей таблиц для поддержки нескольких баз данных.
- Обновление классов драйверов баз данных, улучшение метода
getTables
.
- Добавление команды
optimize:schema
для создания кэша информации о полях таблиц.
- Исправление ошибки привязки параметров при множестве условий в одном запросе.
- Второй параметр метода пагинации
paginate
принимает число как общее количество записей.
- Исправление запросов JSON в MySQL.
- Улучшение метода
getOptions
класса Query, который возвращает null при отсутствии параметра name.
[Модели и связи]* В классе модели field
атрибут не требует определения типа поля.
- Улучшение класса Model добавлением статического метода
getDb
для получения объекта запроса db.
- Улучшение метода
save
в агрегирующей модели.
- Улучшение метода
save
в классе Relation.
- Исправление проблемы метода
save
в многим ко многим связях моделей.
- Улучшение метода
save
в классе Model исправлением проблемы обновления при отсутствии запроса по первичному ключу.
- При получении временного поля, если значение равно NULL, преобразование не выполняется.
[Другое]* Улучшение кэширования конфигураций с поддержкой расширяемых конфигураций
- Отмена конфигурационного параметра
extra_config_list
. Расширяемые конфигурационные файлы следует помещать в директорию extra
, чтобы они автоматически загружались (локация файлов баз данных остаётся без изменения)
- Поддержка проверки действительности кэша в функциях помощника кэша
- Исправление метода
config
в классах привязки движков шаблонизатора
- Внедрение исправлений для ошибки вызова
db()
через __call
при установке свойства модели field = true
- Улучшение метода
config
в классах привязки движков шаблонизатора с поддержкой получения значений конфигурационных параметров
- Улучшение анализа URL в redirect
- Удаление методов
md5
и sha1
в классе File
, замена на метод hash
, поддерживающий генерацию более широкого спектра хешей
- Добавлен метаконтроль
response_end
- Улучшение загрузки по умолчанию языковых пакетов
2016-09-15 версия 5.0
[Запросы и маршруты]* Объект запроса поддерживает динамическое связывание атрибутов.
- Исключение доступа к URL-адресам, определённым маршрутами.
- Улучшение структуры хранения маршрутов.
- Усиление функциональности группировки маршрутов с поддержкой вложенной и виртуальной группировки.
- Эффективное обратное преобразование URL маршрута.
- Улучшение приоритета получения параметров объектом запроса.
- Добавлен метод
name
для установки и получения маркеров маршрутов.
- Добавлены маршруты
MISS
и AUTO
.
- Класс
Route
получил метод auto
, позволяющий регистрировать маршрут для автоматического анализа URL.
- Поддержка привязки моделей к маршрутам.
- Все маршрутизационные переменные должны получаться через метод
param
.
- Поддержка маркеров маршрутов и автоматической привязки.
- Добавлено командное действие для создания кэша маршрутов
optimize:route
.
- Добавлен метод
route
для отдельного получения маршрутизационных переменных объектом запроса.
- Первый параметр методов
param
, get
, post
, put
, request
, delete
, server
, cookie
, env
объекта запроса принимает значение false
, что указывает на получение исходных данных без фильтрации.
- Улучшение автоматической привязки маркеров маршрутов с поддержкой различных маршрутов, указывающих на один и тот же маркер маршрута, улучшение поддержки автоматического создания URL для маркеров маршрутов.
- Улучшение инициализации атрибута
filter
класса Request
.* Улучшение методов isAjax
и isPjax
класса Request
- Добавлен метод
token
класса Request
- Поддержка нескольких конфигурационных файлов маршрутов с использованием параметра конфигурации
route_config_file
- Поддержка HTTPS-проверки при привязке доменов
- Улучшение привязки доменов с поддержкой одновременной привязки модулей и других компонентов, поддержка привязки к массиву определённых маршрутов, отмена привязки доменов к группам
- Добавлен тип запроса PATCH для маршрутов
- Добавлен параметр конфигурации
route_complete_match
для глобального определения полной совпадаемости маршрутов, который может быть переопределён параметром маршрута complete_match
- Улучшение распознавания суффиксов параметров маршрутов с учётом системных псевдо-статических суффиксов параметров
- Класс
Url
получил метод root
для указания текущего адреса root (без доменного имени)
- Улучшение поддержки опциональных параметров при создании URL
[База данных]* Автоматическое привязывание параметров в условиях запроса
- Улучшение метода пагинации с поддержкой привязки параметров
- Добавление параметра метки кэша в методе
cache
класса Query
- Поддержка вызова метода
cache
в методах update
и delete
класса Query
, что автоматически очистит указанный ключ кэша; используется вместе с методами кэширования запроса
- Улучшение метода отложенной записи класса
Query
- Поддержка метода
fetchsql
в методах column
и value
класса Query
- Улучшение метода запроса дат
- Улучшение метода выполнения хранимых процедур
exec
- Улучшение метода получения последнего ID вставки
getLastInsID
класса Connection
- Ведение журнала подключений базы данных (времени подключения и DSN)
- Улучшение проверки результата выборки метода
select
класса Query
- Добавление метода
getNumRows
класса Connection
- Отмена возврата значений методом транзакций базы данных
- Улучшение метода
chunk
класса Query
для получения первичного ключа
- Улучшение работы метода
builder
класса Query
при использовании полного пространства имён типа драйвера базы данных
[Модели]* Добавлено функциональность мягкой очистки
- Улучшены связи моделей и предварительная загрузка
- Поддержана более широкая последовательность операций в замыканиях предварительной загрузки связей
- Усовершенствован метод savell для поддержки обновлений и валидации
- Обеспечено единство возвращаемого значения классом Relation при определении отношений
- Поддержана возможность объединения в методах has и hasWhere классом Model
- Реализована очистка исходных данных при массовом присваивании данных методом data классом Model
- Активировано автоматическое обновление кэша при передаче true третьим параметром методу get классом Model
- Добавлена поддержка только для чтения полей классом Model
- Добавлен метод useGlobalScope для установки использования глобального диапазона запросов классом Model
- Изменён метод base классом Model на статический тип для эффективного многократного использования
- Поддержана возможность установки первичного ключа, информации о полях и типов полей классом Model без зависимости от автоматического получения, что повысило производительность
- Поддержаны модификаторы в методе data классом Model
- Улучшена поддержка нумерационных типов первичного ключа классом Relation
- Улучшено удаление одного ко многим в классе Relation
- Исправлена предварительная загрузка связей одного ко многим в классе Relation### [Журналы и кэш]* Поддержка разделённого хранения типов логов
- Логи позволяют установить уровень записи
- Добавлена функциональность кэширования меток
- Класс кэша расширен методом
pull
для получения и удаления
- Вспомогательные функции кэша добавлены параметр
tag
- Упрощение информации в логах, скрытие пароля базы данных
- Добавление логики выбора библиотек для драйверов кэша/сеанса Redis
- Поддержка параметра
option
для конфигурационных параметров драйвера Memcached
- При режиме отладки добавление записи заголовков страницы и параметров в логи
- Добавление параметров учётной записи и пароля для драйвера кэша Memcached
- Поддержка установки сложных типов для кэша, возможность конфигурирования нескольких кэшей с использованием
store
для переключения
- Добавлен метод
tag
в класс кэша для установки меток кэша, метод clear
поддерживает очистку данных для конкретной метки кэша
- Драйвер логов типа файл позволяет установить отдельные файлы для разных уровней логов
- Улучшение правил названий файлов для кэширования и логов
- Добавлены методы
inc
и dec
в класс кэша для операций увеличения и уменьшения значений
- Добавлен метод
has
в класс кэша, метод get
поддерживает значение по умолчанию### [Другое]* Добавлена поддержка установки параметров шаблонной системы в представлении
- Добавлен механизм создания и проверки токена формы
- Добавлены правила валидации для китайского языка
- Добавлены правила валидации для изображений и файлов
- Объект ответа RedirectResponse теперь поддерживает метод with для передачи параметров
- Улучшена автоматическая инициализация сессий
- В класс Session добавлен метод pull для получения и удаления данных
- Добавлен класс Env для получения переменных окружения
- Изменение значений методов get/post/put в объекте Request продолжает влиять на метод param
- Улучшены адреса перехода Jump для поддержки парсинга Url::build
- Оптимизирован класс Hook
- Добавлена поддержка режима отладки приложения и вывода трассировки страниц через переменные окружения
- Функция помощника config теперь поддерживает использование config('?name')
- Добавлена поддержка привязки модулей с использованием константы BIND_MODULE
- Реализована автоматическая привязка модулей в файлах входа
- Улучшены сообщения об ошибках и шаблоны вывода для класса исключения валидации, поддерживающие вывод ошибок массовой валидации
- Улучшены консольные команды с добавлением некоторых часто используемых методов вывода
- Добавлен функционал помощника token для быстрого отображения токена на страницах
- Добавлен метод halt для отладки переменных и прекращения вывода* Улучшение правил валидации чисел в классе Validate, различая целые числа и числа с плавающей запятой
- Улучшение автозагрузки с расширением области сканирования
- Улучшение правил валидации логических значений в классе Validate, поддерживающих данные форм
- Улучшение функции помощника cookie для проверки наличия конкретного значения куки
- Улучшение функции помощника abort для поддержки выбрасывания исключения HttpResponseException
- Улучшение класса File для обработки ошибок загрузки
- Улучшение метода move класса File для возврата объекта с информацией загруженного файла, добавление метода для получения хэша файла
- Улучшение метода move класса File для возврата экземпляра объекта File
- Добавлены команды clear и optimize:config
- Улучшение классов File и Validate для валидации типов файлов изображений
- Методы действий контроллеров теперь поддерживают внедрение экземпляров объектов помимо Request
- Метод param(true) класса Request теперь поддерживает получение данных вместе с файлами
- Первый аргумент функции помощника input теперь имеет значение по умолчанию
- Класс Validate получил правило валидации image и улучшил поддержку max/min/length для различных типов данных
- Выброс исключения при неудачной сериализации данных при JSON-выводе
[Изменения]
- Удаление определения маршрута отображения (статического маршрута)
- Отмена конфигурации
url_deny_suffix
, теперь используется параметр deny_ext
маршрута* Возвращаемое значение метода save
модели изменено на количество затронутых записей, удалён параметр getId
.
- Метод
controller
объекта Request
возвращает имя контроллера в CamelCase.
- При отсутствии метода предварительной операции контроллера выбрасывается исключение.
- Класс
Loader
метод db
добавлен параметр идентификатора имени.
- Добавлен третий параметр в помощник функций
db
для указания идентификатора соединения.
- По умолчанию драйвер
sqlsrv
не выполняет преобразование полей таблиц данных в нижний регистр.
- Удалён драйвер
sae
, теперь доступен как расширение пакета.
- Драйвер
Oracle
выведен за рамки основного пакета.
- Драйвер
Firebird
выведен за рамки основного пакета.
- Удалён файл определения псевдонимов
alias.php
.
- При чтении параметров конфигурации отменена проверка переменных окружения, при необходимости использования переменных окружения используйте класс
Env
.
- Файл определения переменных окружения изменён на
.env
, теперь определяется в виде ini файла (поддерживается массивное определение).
- Изменён порядок загрузки конфигураций состояния и расширений для удобства изменения параметров расширений в конфигурациях состояния.
- Отменена возможность привязки домена к группе маршрутов.
- Методы
success
и error
класса контроллера поддерживают передачу пустой строки в качестве параметра url, что не требует никаких действий.* Методы error
, success
, result
и redirect
контроллера больше не требуют использования ключевого слова return
.
- Права доступа создания директорий изменены на
0644
.
Версия 2016-7-1 RC4
[Основной архитектурный слой]
- Добавлен класс Request с поддержкой автоматического внедрения зависимостей.
- Унифицирована система автозагрузки Composer.
- Добавлены расширения подкласса Response.
- Введен класс File для работы с загрузками и файлами.
- Отменена поддержка расширений моделей SAE с понижением привилегий.
- Оптимизирован входной файл фреймворка.
- Улучшено управление исключениями.
- Изменены ввод и вывод в классе App.
- Полная поддержка юнит-тестирования.
- Добавлены новые команды консоли.
- Отменены большинство постоянных значений за пределами системы.
- Файлы отображения библиотек генерируются динамически через командную строку, включая приложение.### [База данных]
- Добавлена методика разделения таблиц
- Добавлены методы запросов по датам и времени
- Добавлены методы пагинации запросов
- Добавлены методы запросов к представлениям
- По умолчанию поддерживаются поля таблиц с учётом регистра символов
- Автоматическое обновление кэша данных
- Усовершенствовано поддержание вложенных транзакций
- Улучшено чтение данных из хранилищ процедур
- Поддерживается установка типа возвращаемого набора данных при выполнении запросов
[Модели]
- Добавлен расширенный тип модели Merge
- Поддержка динамических запросов моделями
- Расширена поддержка автоматической конвертации типов данных
- Добавлен глобальный диапазон запросов
- Поддержка скрытия и добавления свойств при преобразовании в json/toArray
- Добавлена поддержка удалённого связывания one-to-many
[Другое]
- Изменена структура хранения логов
- Функционал отладки Trace выделен из класса логов и усилен
- Функционал класса Input объединён с классом Request
- Файлы отображения библиотек генерируются через командную строку, включая приложение
- Аргумент data в методе check класса проверки теперь передаётся без ссылки
- Добавлена возможность MISS маршрутизации
- Добавлена возможность использования псевдонимов маршрутов## Версия 2016-4-23 RC3
[Основной архитектурный слой]
- Разделены основные и прикладные репозитории фреймворка для удобства независимого обновления через composer
- Переработан класс базы данных, разделённый на Connection (соединитель)/Query (запрос)/Builder (генератор SQL)
- Переработан класс модели, сделан более объектным### [База данных]
- Новый синтаксис запросов
- Запросы и транзакции с использованием замыканий
- Запросы через объект Query
- Обработка данных порциями
- Прислушивание к выполнению SQL
[Модели]
- Объектные операции
- Поддержка статического вызова (запросы)
- Поддержка читателей/редакторов
- Поля со временем создания/обновления
- Обращение к объектам/массивам
- JSON сериализация
- Вызов событий
- Именованные области
- Автоматическая конвертация типов данных
- Валидация и завершение данных
- Запросы/вставка связей
- Предварительная загрузка связей
[Другие изменения]
- Добавлена быстрая маршрутизация в класс Route
- Переработан класс валидации Validate
- Добавлены методы быстрого создания модулей в классе Build
- Улучшен класс генерации URL
- Улучшен класс валидации Validate
- Усовершенствован класс View и его движок шаблонов
- Отменена темизация шаблонов движка шаблонов
- Исправлены проблемы, сообщенные сообществом
- Переименованы помощники функций
- Файл
router.php
перемещён в новую позицию
Версия 2016-03-11 RC2* Переработана система автоматической проверки и автозаполнения (ранее использовались traits\model\Auto
);
- Независимый дизайн класса
Validate
;
- Автоматическое создание функционала передается консоли;
- Обработка регистрозависимости полей таблиц данных;
- Улучшенный класс
Controller
(отменены traits\controller\View
);
- Улучшенный класс
Input
;
- Улучшенный класс
Url
;
- Улучшенный класс
Cookie
;
- Оптимизация класса
Loader
;
- Оптимизация класса
Route
;
- Оптимизация класса
Template
;
- Автоматическая инициализация класса
Session
;
- Добавлены
traits\model\Bulk
для расширения модели для массового ввода и обновления данных;
- Добавлен тестовый драйвер для классов кэширования и журналирования;
- Улучшена система обработки ошибок и механизм исключений;
- Добавлена возможность автоматического преобразования URL-контроллеров и действий;
- Поддержка установки суффиксов для названий классов;
- Отменено привязывание действий к классам;
- Отменено использование параметра
use_db_switch
.## Версия 2016-1-30 RC1
[Основная архитектура]
- Реальное ленивое загрузочное состояние
- Разбиение основных компонентов на модули
- Файлы запуска фреймворка
- Полностью автоматическая загрузка библиотек (поддерживает Composer)
- Расширение с помощью Traits
- Дружественный к API вывод, отладка и обработка исключений
- Изменение правил именования файлов
[Отладка и исключения]
- Вывод, отладка и обработка исключений, специально разработанные для работы с API
- Класс журнала поддерживает запись в локальные файлы/SAE/страницы Trace/SocketLog, что позволяет использовать удалённые плагины браузера для отладки
- Встроенный метод trace для прямого удалённого отладки
- Драйвер предупреждений об исключениях
- Поддержка анализа производительности SQL баз данных
[Маршруты]
- Динамическая регистрация маршрутов
- Пользовательская функция проверки маршрута
- Группировка маршрутов
- Поддержка переменных в правилах маршрутов (включая глобальные и локальные) с использованием регулярных выражений
- Закрытые маршруты
- Поддержка маршрутизации к многоуровневым контроллерам
[Контроллеры]* Класс контроллеров больше не требует наследования от класса controller
-
Поддержка многократной маршрутизации контроллеров
-
Возможность использования Traits для внедрения продвинутых функций контроллеров
-
Расширение контроллеров REST/YAR/RPC/HProse/JSON-RPC
-
Поддержка исключения и указания конкретных действий### [Модели]
-
Упрощённая основная модель
-
Расширение модели с помощью Traits (продвинутые модели/модели представления/ассоциированные модели)
-
Поддержка чтения из главной базы данных при распределении между главной и зависимой базами
-
Улучшение методов join и order
[Представления]
- Драйвер парсинга представлений (шаблонный движок)
- Все методы теперь возвращают значения вместо прямого вывода, позволяя системе выполнять единственный вывод
- Динамическое переключение тем шаблонов
- Динамическое переключение шаблонных движков
[Базы данных]
- Полностью реализовано на основе PDO
- Упрощённая архитектура баз данных
- Мониторинг производительности SQL (требуется включение режима отладки базы данных)
- Улучшено привязывание параметров PDO
[Другие возможности]
- Поддержка автоматического создания директорий и файлов MVC
- По умолчанию функции добавляют переменной модификатор /s
- В одном поведенческом классе можно определить различные методы для нескольких меток
- Расширенный набор расширений социальных классов
Опубликовать ( 0 )