У меня есть приложение PHP, которое я написал ранее, и хотел бы добавить API RESTful. Я также хотел бы расширить сайт, чтобы он больше походил на приложение Rails с точки зрения URL-адресов, которые вы вызываете, чтобы получить элементы в системе.
Есть ли способ вызвать элементы на PHP в Railsy без создания всех типов папок и индексных страниц? Как я могу вызвать информацию на PHP без использования тега запроса GET?
Если у вас есть какая-то форма mod_rewrite, вы можете сделать это довольно легко с файлом .htaccess.
Если у вас есть что-то вроде этого:
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
Он проверит, что файл, который вы пытаетесь получить, уже не существует. (Скажем, у вас есть файл hello.html, что вам все еще нужны люди для доступа через http://yoursite.com/hello.html )
Затем, если файл еще не существует, он загрузит ваш файл index.php остальной частью URL-адреса, хранящегося в переменной url.
Это означает, что вы можете вызвать что-то вроде этого http://yoursite.com/pages/edit/24, и он будет загружать index.php с / pages / edit / 24 внутри переменной url.
Это должно заставить вас начать, и вам не понадобятся все типы папок и индексных страниц, просто файл mod_rewrite, .htaccess и index.php, которые будут использоваться для загрузки всех необходимых вам.
Вы также можете рассмотреть возможность использования одной из фреймворков PHP со встроенной поддержкой REST, например CakePHP .
Быстрое примечание в ответ на Pascal MARTIN: Zend_Rest_Server не имеет абсолютно никакого отношения к REST. Они просто делают RPC со слегка более удобными URL-адресами и называют его REST таким образом, что он более модный.
Если вы хотите сделать REST, вам нужно будет немного поработать, так как я еще не нашел хорошую REST-библиотеку для PHP. Поэтому проверьте $_SERVER['REQUEST_METHOD']
чтобы решить, что делать с вызываемым ресурсом и т. Д.
Самый простой способ, вероятно, будет использовать фреймворк, который предоставляет вам ориентированные на REST функциональные возможности. Я знаю, что Zend Framework делает это с классом Zend_Rest_Server
, что позволяет легко создавать сервер REST.
Я полагаю, что многие другие структуры делают то же самое.
Но если у вас уже есть приложение, которое не использует фреймворк (или оно основано на платформе, которая не встраивает этот класс), пара правил URLrEwriting будет очень хороша; вам просто нужно немного поработать над сопоставлением URLS / параметров с классами / методами 🙁
Образец дизайна, который вы ищете, называется фронт-контроллером .
В своей простейшей форме вы используете mod_rewrite для передачи входящих запросов и передачи их одному скрипту php. Затем URL обрабатывается регулярными выражениями и сопоставляется с различными действиями отклика. Однако сопоставление существующего приложения может потребовать обширной перезаписи.
Если вы хотите поиграть с этой концепцией, я рекомендую микрофрейм Silex .