CakePHP: как я могу получить доступ к функциональности Cake из простого скрипта PHP на том же сайте - PullRequest
1 голос
/ 05 марта 2012

У меня есть веб-сайт, которому 15 лет и который изначально был написан на PHP-коде. Я недавно привил бэкэнд, реализованный в CakePHP, который я поместил в его собственную папку на главном веб-сайте (все URL выглядят как http://www.mysite.com/console/<cake stuff>).

Этот бэкэнд работает нормально, и у меня есть много полезных функций в части CakePHP - но теперь я хотел бы иметь возможность получить доступ к некоторым из этих функций с главного сайта, так как это кажется пустой тратой на повторную реализацию в ванильном PHP.

Конечно, одним из вариантов было бы, чтобы код Cake выдавал результаты в JSON, а затем на странице PHP я мог бы использовать curl, вызывая действие, в псевдокоде:

$data = curl('http://mysite.com/console/accounts/data.json');
$accounts = json_decode($data);

Но, кажется, очень неэффективно использовать curl на странице на том же сайте . Вместо этого я хотел бы иметь класс, который будет работать примерно так:

require('clever_stuff.php');
$cakeAccessor = new CakeAccessor(<settings>);
$accounts = $cakeAccessor->requestAction('orders','data');

Я искал в Интернете и ничего не могу найти. Но прежде чем пытаться реализовать свой собственный класс (который, я надеюсь, станет возможным, скопировав код в сценариях оболочки, предназначенных для вызова функциональности Cake из командной строки), я подумал, есть ли кто-нибудь новый модуль с открытым исходным кодом, который уже делает это.

Обратите внимание: невозможно переместить все страницы с основного сайта в каталог webroot.

1 Ответ

0 голосов
/ 05 марта 2012

Возможно, создайте подкласс класса CakeResponse, измените его метод send, чтобы остановить автоматический вывод, а затем используйте измененную версию webroot/index.php для отправки в ваш пользовательский класс и получения вывода Cake изэто.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...