GMFramework v1.0.15
GMFramework v1.0.15Обновлённая версия PHP фреймворка (исходники, phar).
Одно из нововведений - конструктор запросов в классе DBConnect. Метод принимает ассоциативный массив с допустимыми полями:
- SELECT - определяет операцию выборки, значение - поля для выборки, может быть массивом, тогда поля оборачиваются в магические кавычки, за исключением случаев:
- переданное значение является числом;
- переданное значение начинается с `;
- переданное значение начинается с '|";
- переданное значение - пустая строка (будет обёрнута в одинарные кавычки).
- FROM - таблицы выборки (будут обёрнуты в магические кавычки и, в зависимости от второго параметра, к этим названиям могут подставляться префиксы), может быть массив - если таблиц выборки несколько.
- JOINS - массив массивов вида array('join_operator'=>table_reference, 'ON'=>join_condition'|'USING'=>column_list), где table_reference вида FROM, join_condition вида WHERE, column_list вида SELECT.
- WHERE - условие, может быть массивом (в таком случае объединяется через AND), если это ассоциативный массив - то ключ считается названием поля (см. INSERT);
- GROUPBY.
- HAVING.
- ORDER BY - порядок, может быть массивом.
- LIMIT.
- INSERT|REPLACE - определяет операцию вставки, значение - строка полей, в которые будет происходить вставка (может быть пустым), массив полей или ассоциативный массив {название поля=>значение|массив значений}, если значение является строкой и не начинается с ` - оно будет пропущено через escape функцию и обёрнуто в '.
- INTO - имя таблицы (будут добавлены ` и по необходимости префикс).
- VALUES - строка значений, массив строк значений или массив массивов значений, в котором элементы расположены в нужном порядке (свойство игнорируется, если значения заданы в INSERT).
- ON DUPLICATE KEY UPDATE - строка значений или массив полей, если передана пустая строка и для вставки был передан массив - то обновлены будут все поля для вставки, если массив полей - то только переданные поля, при этом в качестве поля может выступать ассоциативный массив вида array(имя_поля=>значение) или строка, если нужно использовать значение из INSERT. Если был передан ассоциативный массив - ключи будут считаться названиями полей, а значения их новыми значениями.
- UPDATE - определяет операцию обновления, значение - см. FROM.
- SET - строка или ассоциативный массив поле=>значение, см. INSERT;
- DELETE - определяет операцию удаления, значение - см. FROM.
Пример использования:
$db = new DBConnect(); $sql = $db->buildQuery(array( 'SELECT' => array( 'id', 'name', 'desc' ), 'FROM' => 'table_name', 'WHERE' => array( 'id' => 10, 'name' => 'myname' ) ));
Также можно сразу выполнить запрос, построенный таким образом:
$db->queryb(array( 'SELECT' => '*', 'FROM' => 'table_name', 'WHERE' => array( '`id` > 10', '`count` = 2' ), 'ORDER BY' => '`count` DESC', 'LIMIT' => '5,10' ));
Работа с датой и временем
Работа с датой и временемУтилита для работы с датой и временем из GMFramework. Класс написан был давно, но в PHP 5.2 появился класс DateTime, фактически являющийся объектно-ориентированный обёрткой для привычных функций. После этого я унаследовал свой DateTimeUtils от него и оставил только статические методы, надеясь в дальнейшем расширять функционал по мере необходимости.
На данный момент основное предназначение класса - вывод даты в формате mysql datetime и конвертация его в unixtime.
Защищённый запрос к ВКонтакте API
Защищённый запрос к ВКонтакте APIКласс из GMFramework, с помощью которого можно осуществлять запросы к ВКонтакте API.
Для обеспечения безопасности запроса используется защищенный ключ приложения. Подразумевается, что он сохранён в константе SECURE_CODE
.
Для выполнения запросов к скриптам ВКонтакте используется модуль PHP cURL, для обработки ответа JSON. От использования XML-формата я отказался, поэтому он больше не поддерживается.
Менеджер сессий
Менеджер сессийКласс менеджера сессий, входящий в GMFramework. Класс написан linblow (http://php.net/manual/ru/function.session-start.php), я только немного его изменял.
GMFramework
GMFrameworkВо время написания серверных скриптов на PHP для различных проектов (обычно это as3/flex приложения, для которых требуется серверная часть) мне часто приходится выполнять одни и те же действия. В результате я собрал свои самые часто употребляемые классы и назвал это скромно GMFramework. Правда часть классов из него уже устарела, часть в вечной разработке, но по ходу проектов честно стараюсь обновлять.
Класс для работы с FTP
Класс для работы с FTPВ рамках собственного фреймворка (GMFramework) когда-то был написан простенький класс для работы с ftp.