Я предоставлю это, сказав, что я дрянной программист, я уверен, что то, что я хочу сделать, может быть сделано в 10 строках узла или Rails или что-то еще, но PHP – это то, что у меня есть.
Итак, я надеюсь найти простую PHP-библиотеку, которая обертывает вызовы базы данных в API, который похож на модель RESTful.
У меня не было большого успеха, пытаясь найти такую вещь – поиск PHP CRUD
или PHP REST
открывает несколько миллионов страниц, и я не знаю, как их фильтровать.
Я действительно стараюсь, чтобы все было здесь просто, я не хочу, чтобы большая платформа вроде Zend или что-то в этом роде. Модели, с которыми я имею дело в Backbone, действительно просты. Я просто хочу отправить GET
, скажем, /notes/3
или POST
s в /notes
и т. Д., И PHP сделает правильную вещь в базе данных.
Возможно, я слишком много спрашиваю, но мне кажется, что это то, что предоставляют другие среды, такие как Rails. Какие-либо предложения? ТИА …
EDIT Ноябрь 2018: Хотя я бы не стук CodeIgniter, в настоящее время Laravel (в настоящее время 5.5) является основой, которую я использую.
Вот хорошая статья, в которой излагаются причины, по которым я использую Laravel.
Чтобы начать прыжок, я рекомендую Laracasts . Это обучающая услуга по подписке на видео, которая подробно рассказывает о том, как использовать Laravel (и другие связанные с веб-разработчиками вещи).
ОРИГИНАЛЬНЫЙ ОТВЕТ:
Codeigniter , для меня, является самой простой из Rails-подобных фреймворков. Это голые кости, и вы можете легко создавать CRUD-приложение с нуля.
Самой большой проблемой при прокачке собственного приложения является безопасность. Codeigniter может помочь вам создать менее уязвимый сайт, защищая вас от многих общих угроз безопасности, например, напрямую используя массивы $ _POST и не фильтруя ваши данные. Не говоря уже о многих вспомогательных классах, которые он предлагает, таких как проверка формы.
Вы можете просмотреть документацию на своем веб-сайте. Он очень прост в использовании, пока вы помните, что навигация скрыта в верхней части каждой страницы. : D
Вы понимаете, как CRUD работает внутри страны? С точки зрения PHP это может быть так же просто, как наличие оператора switch над каждой возможностью вызова REST.
См. Эту страницу здесь: http://www.codethinked.com/building-epic-win-with-backbone-js
Перейти к разделу «Подключение к серверу».
Ваш PHP-скрипт просто должен удовлетворить эти требования.
Простой код прототипа:
switch($_SERVER['REQUEST_METHOD']){ case 'POST': // create new item break; case 'GET': // get item(s) break; case 'PUT': // update item break; case 'DELETE': // delete item break; }
Вам также потребуется настроить файл .htaccess
следующим образом (для обращения к несуществующим URL-адресам):
# Turn on rewrite engine and redirect broken requests to index <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-l RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule .* index.php [L,QSA] </IfModule>
URL-адрес, такой как http://mysite.com/1
, не существует, поэтому вам нужно маршрутизировать.
Изменить: если вы планируете использовать PUT или DELETE в HTML-формах, забудьте об этом. Начиная с написания этого, он не был принят в HTML5, и почти все браузеры не поддерживают это. Мое «исправление» этого – использовать GET
для запросов GET
и POST
для всех остальных (само сообщение POST
и DELETE
). Пример:
<form action="POST" action="/users/5"> <input type="hidden" name="method" value="DELETE"/> <button>Delete User #5</button> </form>
Это, однако, не проблема с AJAX, поскольку, по-видимому, вы можете установить метод XMLHttpRequest на все, что хотите, без проблем.
Для PHP существует множество restfull фреймворков, посмотрите здесь и здесь .
Мне лично нравится безмасляная структура, но для этого вам нужен PHP 5.3. Также есть много поддержки для Тоника и Пересадки, кажется довольно интересным.
Кроме того, все стандартные фреймворки имеют некоторую поддержку для отдыха (zend, воспламенитель кода, symfony и т.п.)
Вы должны найти подходящий вариант.
Также, если у вас уже есть ваши запросы mysql, вы можете преобразовать результаты mysql непосредственно в json следующим образом:
function recordSetToJson($mysql_result) { $rs = array(); while($rs[] = mysql_fetch_assoc($mysql_result)) { // you don´t really need to do anything here. } return json_encode($rs); }
После этого довольно легко общаться с URL-адресами.
From: Преобразование записи MySQL в строку JSON в PHP
Вы можете использовать silex https://github.com/fabpot/Silex простую структуру на основе симфонии 2. С помощью Silex вы можете легко маршрутизировать и отображать действие.
У вас есть доступ к основному элементу CRUD, и вы можете вызвать функцию с компонентом URL.
В документации есть несколько примеров: http://silex-project.org/doc/usage.html
новое решение REST api
примеры http://www.apifysnippets.com/
учебник http://blog.fedecarg.com/2011/09/11/building-a-restful-web-api-with-php-and-apify/
ОБНОВИТЬ:
другое решение для отдыха для PHP: http://luracast.com/products/restler/
🙂
вы можете посмотреть на Slim:
его определенно легкий вес и может дать вам то, что вам кажется, что вы ищете, легко развернутый бэкэнд RESTful с php.