06.04.2010, 16:52
|
Аспирант
|
|
Регистрация: 21.09.2009
Сообщений: 59
|
|
[php] Велосипедные библиотеки
Пишу комплекс библиотек, что-то типа fw. Что уже есть:
Request (get, post, files, чтение cookies),
Response (установка cookies, headers),
Validator (форм),
Tralslate (локализация, с plural-формами, можно писать разные драйвера: gettext, DB),
Router (ЧПУ),
Settings (read only, phpArrays),
Paginator (только расчеты, отрисовка страниц делается через шаблоны),
Template (надстройка над Twig),
Database (надстройка над mysqli, свои типизированные плейсхолдеры).
В процессе Auth.
http://code.google.com/p/bicycle-libraries/
|
|
06.04.2010, 16:59
|
Аспирант
|
|
Регистрация: 21.09.2009
Сообщений: 59
|
|
Доступ к репозиторию (read-only, Mercurial)
Код:
|
hg clone https://bicycle-libraries.googlecode.com/hg/ bicycle-libraries |
Примеры работы:
/* исходные данные */
$_POST['foo'] = 'bar';
$_GET['a'] = 1;
$_FILES['fileField1'] = array(
'name' => 'MyFile0.jpg',
'type' => 'image/jpeg',
'tmp_name' => '/tmp/php/php6hst32',
'error' => 0,
'size' => 98174
);
$_FILES['fileField2'] = array(
'name' => array(
'MyFile1.txt',
'MyFile1.jpg'
),
'type' => array(
'text/plain',
'image/jpeg'
),
'tmp_name' => array(
'/tmp/php/php1h4j1o',
'/tmp/php/php6hst32'
),
'error' => array(
0,
0
),
'size' => array(
123,
98174
)
);
/* после подкл. core/bootstrap.php */
$_r = BL_Request::instance();
$_r->get->foo; // NULL
$_r->post->foo; // 'bar'
$_r->foo; // 'bar' (from request)
$_r->post->c = 'd';
$_r->post('c'); // 'd'
// ArrayAccess тоже работает
$_r['post']['c']; // 'd'
// не забываем про файлы
$request->files('fileField1'); // ассоциативный массив
$request->files('fileField2'); // список из ассоциативных массивов
Последний раз редактировалось Koc, 06.04.2010 в 17:01.
|
|
06.04.2010, 17:04
|
Аспирант
|
|
Регистрация: 21.09.2009
Сообщений: 59
|
|
докой к сожалению нет времени заниматься, говорите, какой компонент именно интересует, о нем буду детально рассказывать.
ps: сорри за 3 поста подряд, привык к склейке
|
|
06.04.2010, 19:42
|
|
Матрос
|
|
Регистрация: 04.04.2008
Сообщений: 6,246
|
|
делать объектную обертку вокруг суперглобальных массивов, мягко говоря не самая лучшая идея
если все остальное также происходит, то библиотека достойна только смерти, медленной и мучительной
PS в форуме есть возможность редактирования постов, чтобы не оставлять дабл и трипл-постов
|
|
06.04.2010, 21:36
|
Аспирант
|
|
Регистрация: 21.09.2009
Сообщений: 59
|
|
я в курсе про редактирование, но склейка не лишняя =).
Цитата:
|
Последний раз редактировалось Koc, Сегодня в 16:01.
|
а чем собственно говоря обертка над $_(GET|POST|COOKIE|FILES) не нравится? У sf есть похожая, во 2 ветке - называется RequestHandler, и сегодня туда были добавлены акцессоры к COOKIE и FILES.
Вполне логично, когда в системе есть объекты Request и Response.
|
|
06.04.2010, 22:12
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Сообщение от Koc
|
а чем собственно говоря обертка над $_(GET|POST|COOKIE|FILES) не нравится?
|
А зачем? В чём профит?
|
|
06.04.2010, 22:37
|
|
Матрос
|
|
Регистрация: 04.04.2008
Сообщений: 6,246
|
|
Сообщение от Kolyaj
|
А зачем? В чём профит?
|
+1
Koc, кроме лишних тормозов, еще что-то по вашему это дает?
|
|
06.04.2010, 22:59
|
Аспирант
|
|
Регистрация: 21.09.2009
Сообщений: 59
|
|
1) более удобный доступ к файлам. К примеру выше
$request->files->fileField2 // тут структура будет не такая, как в $_FILES['fileField2']
/*
array (
'name' => 'MyFile1.txt',
'type' => 'text/plain',
'size' => 123,
'tmp_name' => '/tmp/php/php1h4j1o',
'error' => 0
),
array (
'name' => 'MyFile1.jpg',
'type' => 'image/jpeg',
'size' => 98174,
'tmp_name' => '/tmp/php/php6hst32',
'error' => 0
)
*/
2) не будет нотайсов в случае если запрошенные ключи в массиве отсутствуют
3)можно подставлять значения по-умолчанию, если ключи не объявлены
$request->cookies('cookie', 'default value');
4) обернутый $_REQUEST ($_r->request) не будет "загажен" куками.
5) в случае установки кук через Response они сразу же будут доступны в Request'е
6) Аяксовый у нас запрос пришел? $_r->isAjax(); А может быть мы отправляли файлы через iframe? $_r->isIframed();
7) Запрос аяксовый (а значит данные в UTF-8), но наш проект в cp1251? Да нивапрос, Request сам все разрулит и конвертнет пришедшие данные в кодировку проекта
8) на сервере включены mq_gpc? Request задетектит это и пройдется по данным через stripslashes
|
|
06.04.2010, 23:04
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Koc,
ок. Хотя местами перебор (7, например).
|
|
06.04.2010, 23:23
|
|
Матрос
|
|
Регистрация: 04.04.2008
Сообщений: 6,246
|
|
честно говоря половина пунктов мне не по нраву, так как считаю, что программист должен разруливать их самостоятельно необходимым образом, а не надеятся на "умное" поведение вашей либы.
и расплачиватся за это заодно производительностью(от 10-и раз на каждом обращении, и выше)
не, это как-то не по мне
но думаю, найдется достаточно народа, кому это может подойти
удачи вам и творческих успехов
Последний раз редактировалось Gvozd, 06.04.2010 в 23:26.
|
|
|
|