[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/ |
Доступ к репозиторию (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'); // список из ассоциативных массивов |
докой к сожалению нет времени заниматься, говорите, какой компонент именно интересует, о нем буду детально рассказывать.
ps: сорри за 3 поста подряд, привык к склейке |
делать объектную обертку вокруг суперглобальных массивов, мягко говоря не самая лучшая идея
если все остальное также происходит, то библиотека достойна только смерти, медленной и мучительной PS в форуме есть возможность редактирования постов, чтобы не оставлять дабл и трипл-постов |
я в курсе про редактирование, но склейка не лишняя =).
Цитата:
Вполне логично, когда в системе есть объекты Request и Response. |
Цитата:
|
Цитата:
Koc, кроме лишних тормозов, еще что-то по вашему это дает? |
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 |
Koc,
ок. Хотя местами перебор (7, например). |
честно говоря половина пунктов мне не по нраву, так как считаю, что программист должен разруливать их самостоятельно необходимым образом, а не надеятся на "умное" поведение вашей либы.
и расплачиватся за это заодно производительностью(от 10-и раз на каждом обращении, и выше) не, это как-то не по мне но думаю, найдется достаточно народа, кому это может подойти удачи вам и творческих успехов |
Часовой пояс GMT +3, время: 19:24. |