Слияние кода завершено, страница обновится автоматически
#ЗагрузкаPHP Простой PHP-фреймворк на основе Smarty, написанный давним-давних времен, сейчас решил его использовать снова.
/**
+-------------------------------------------------------
* История обновлений
+-------------------------------------------------------
*/
V1.4:
1. Установил метод подключения базы данных как статический метод.
2. Пример использования нового метода init($table) для создания экземпляра класса работы с базой данных и установки имени таблицы.
3. Пример: $user = init("user"); $user->insert(array(NULL,"loadphp"));
4. Изменение местоположения файла проверки первого запуска, исправление ошибок при создании директорий и файлов в нескольких проектах.
5. Разделение встроенных функциональных классов и основных классов (директории core и class).
6. Добавлены директории commons/function и commons/class для оптимизации пользовательских расширений классов и функций.
7. Пользователи могут использовать свои функции без необходимости включать их, система будет автоматически включать их.
```V1.5:
1. Оптимизация способа работы с базой данных.
2. Поддержка цепочечной операции.
Пример кода:
`$user = init("user");`
`$user->insert(array(NULL, "loadphp"));` // Вставка записи
`$user->where(array("id" => 1))->update(array("name" => "loadphp"));` // Обновление записи
`$user->where(array("id >" => 2))->del();` // Удаление записи
`$user->where(array("id" => 1, "name like" => "%load%"), "or")->order("id DESC")->limit(2)->findAll();` // Поиск нескольких записей
`$user->where(array("id" => 1, "name like" => "%load%"), "or")->order("id DESC")->limit("1,2")->findAll(array("name"));` // Поиск нескольких записей
`$user->where(array("id" => 1, "name like" => "%load%"), "or")->order("id DESC")->find();` // Поиск одной записи
3. Оптимизация пагинации, теперь можно добавлять пагинацию даже при использовании стандартных файлов выполнения, контроллеров и методов.V1.5.1:
1. Оптимизация способа загрузки пользовательских функций.
2. Исправление ошибки SQL при отсутствии параметров в where, order, limit и других запросах.
Теперь можно использовать следующие команды:
`$user = init("user"); $user->where()->order()->limit()->findAll();` // Поиск нескольких записей
3. Оптимизация функции `init()`, теперь она не создаёт новый объект DB, если он уже существует, а просто устанавливает имя таблицы.
4. Оптимизация класса работы с базой данных, решение проблемы полного наследования пользовательского model от родительского класса.
5. Оптимизация способа получения общего количества записей в базе данных, чтобы пользователю не пришлось сначала получать это количество.
Пример:
До: `$user = init("user"); $user->query("select * from user"); echo $user->getRows();` // выводит 10
После: `$user = init("user"); echo $user->getRows();` // выводит 10
6. Улучшение метода `DB::query()`, чтобы лучше поддерживать SQL-запросы типа SELECT, INSERT, UPDATE, DELETE.
V1.6:
1. Оптимизация способа конфигурирования пользователя, разделение информации о конфигурации пользователя из основного файла входа в отдельный файл (loadConfig.php)
2. Добавление поддержки функции псевдо-статических URL.
Откройте файл `loadphp/loadConfig.php`, измените значения `IS_STATIC` и `STATIC_FOLLOWING` для активации псевдо-статического режима (по умолчанию включен) и псевдо-статического расширения.Пример:
Если пользователь определяет: `define("IS_STATIC", true); define("STATIC_FOLLOWING", ".html");`,
то следующие URL-форматы будут допустимыми:
http://servername/index.php/index.html равнозначно http://servername/index.php/index
http://servername/index.php/index/action.html равнозначно http://servername/index.php/index/action
http://servername/index.php/index/action/id/1.html равнозначно http://servername/index.php/index/action/id/1
Расширение можно также указывать самостоятельно, например:
Если `define("STATIC_FOLLOWING", ".shtml");`,
то следующие URL-форматы будут допустимыми:
http://servername/index.php/index.shtml равнозначно http://servername/index.php/index
http://servername/index.php/index/action.shtml равнозначно http://servername/index.php/index/action
http://servername/index.php/index/action/id/1.shtml равнозначно http://servername/index.php/index/action/id/13. При обращении к неопределенному контроллеру или действию будет возвращена главная страница.
4. Возможность пользователю определять границы символов шаблонной переменной в файле `loadConfig.php`.
5. Возможность пользователю определять тип шаблонного файла.
6. Оптимизация хранения шаблонных файлов, шаблоны фактически хранятся в папках `view/шаблонный набор` (по умолчанию `default`)/`контроллер` (требуется создание вручную).
Пример: Шаблонный файл для метода `User` контроллера `Index` находится в `view/default/Index/User.html`.
7. Возможность пользователю изменять шаблонный набор в файле `loadConfig.php`.
8. Изменение использования `display`, если передаются параметры шаблона, пользователю не требуется указывать расширение. Пример: При вызове файла `index.html` в методах, отличных от `Index` (так как в методе `Index` можно использовать просто `$this->display()`), используется следующий синтаксис: `$this->display("index")`.9\. С версии LoadPHP 1.6 предоставляются два варианта фреймворка: core (основной вариант) и full (полная версия).
Основной вариант не включает движок шаблонов Smarty; пользователю требуется самостоятельно скопировать все файлы Smarty в каталог loadphp/lib.
V1.7
1\. Добавлен константный URL текущего контроллера CURURL, который может использоваться в шаблонах через <($cururl)>.
2\. Улучшена процедура создания директорий.
3\. Временные данные теперь очищаются более надежно: $this->clearCache() — для удаления кэша текущего контроллера, $this->clearAllCache() — для полной очистки кэша.
4\. Изменено создание проектов пользователями: все входные файлы должны находиться на одном уровне со списком loadphp. Например, ранее можно было создать каталог admin на том же уровне, что и loadphp, а затем создать index.php внутри этого каталога. Теперь требуется создать admin.php на том же уровне, что и loadphp, и указать APP_PATH='. /admin'.
5\. После выполнения пункта 4 commons и public каталоги создаются внутри каталога admin, служащие общими каталогами для проекта admin.
6\. Добавлен каталог pub, расположенный на том же уровне, что и loadphp, для хранения общих файлов нескольких проектов. Обращение к нему осуществляется через PUB_PATH (относительно текущего файла), $pub_path (относительно корневого каталога) и <($pub)> (в шаблонах).
7\. Переименован метод D системы в load (система автоматически его вызывает).8\. Улучшена автоматическая генерация директорий.
v1.8
1\. Оптимизирована обработка условий кэширования URL.
2\. Переработан класс проверки безопасности, используемый следующим образом: `$check = new CheckInput(0);` // 0 — проверка, безопасность возвращает `true`. 1 — блокировка, возвращает заблокированную строку.
3\. Предоставлена возможность переключения между режимами проверки и блокировки, например, если объект был создан для проверки, то можно переключиться на режим блокировки с помощью метода `$ch->changeMeta()`.
v1.9
1\. Добавлен способ доступа к шаблонам вне текущего контроллера: `$this->display("шаблон_название@шаблон_каталог")`. Например, `$this->display("index@User")` будет использовать файл `index` из контроллера `User`.
2\. Изменены сообщения об успешном и неудачном завершении операций: `$this->display("notice",1/2,URL);` // 1 — успех, 2 — неудача.
3\. Улучшен шаблонный файл, решив проблему некорректного включения.4\. Добавлен шаблонный переменный `tplpath`, представляющий собой имя текущего шаблона, что позволяет обращаться к шаблонам различных контроллеров. 5. Все шаблонные файлы должны находиться в одной директории внутри папки `Default` (можно переопределить), например, общие файлы `header` можно поместить в `Default/public/`, используя при этом конструкцию: `<(include file="<($tplpath)>/public/header.html")>`<br />
6. Устранена проблема с методом `DB::getRows()`, которая приводила к некорректному получению данных при наличии условий. Например, чтобы получить количество записей с `id` больше 5, можно использовать следующий код:<br />
`$db = init('user'); $db->where(['id >' => 5])->getRows();`<br />
<br />
v2. 0<br />
1. Базовый класс `Base.class.php` переименован в `BaseAction.class.php`.<br />
2. Класс модели `DB.class.php` переименован в `DBModel.class.php`. <br />
3. Нормализовано название контроллеров, например, контроллер `Index` должен называться `IndexAction` и наследовать `BaseAction`. <br />
4. Нормализовано название моделей, например, модель `User` должна называться `UserModel` и наследовать `DBModel`. <br />
5. Оптимизированы расширяемые модели пользователя, теперь можно вызывать новую функцию `initM()`. Функция `initM()` используется аналогично `init()`, принимает имя таблицы как аргумент. <br />
6. Устранены проблемы вывода сообщений об ошибках. <br />
7. Удалён класс `Mysql.class.php`, так как использование функций MySQL серии больше не требуется. <br />
8. Обновление направлено на усиление возможностей MVC-разработки в рамках фреймворка. <br />
9.В будущих версиях планируется добавление настройки префикса таблиц базы данных и упрощение шаблонов Smarty<br />
<br />
v2.1<br />
1. Улучшено поведение псевдо-статических запросов, что позволяет пользователям самостоятельно определять разделители (по умолчанию '–'), например, index.php/index-test-name-load.html будет эквивалентно запросу index.php/index/test/name/load<br />
2. Улучшен класс работы с базой данных через PDO<br />
3. Улучшена функция DBModel::query()<br />
4. Функция init() (инициализация объекта системы) переименована в D()<br />
5. Функция initM() (инициализация расширенной модели) переименована в M()<br />
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )