Можно ли заставить codeigniter работать с другим фреймворком?

ситуация такая.

мой клиент (который также является программистом) просит меня разработать адресную книгу (с базой данных mysql) с множеством функций. затем он может взаимодействовать с некоторыми методами класса, которые я ему предоставляю. вроде API.

ситуация такова, что приложение адресной книги становится все больше и больше, и мне кажется, что лучше использовать CodeIgniter для его кодирования с помощью MVC.

интересно, могу ли я использовать codeigniter, а затем каким-то образом дать ему доступ к методам контроллера.

например. в контроллере есть некоторые функции, которые вы можете вызывать с помощью веб-браузера.

public function create_contact($information) {..}

public function delete_contact($id) {..}

public function get_contact($id) {..}

однако их можно вызывать только из веб-браузера. как я могу предоставить моему клиенту доступ к этим функциям, таким как API?

то в своем приложении он может использовать:

$result = $address_book->create_contact($information);
if($result) {
    echo "Success";
}

$contact = $address_book->get_contact($id);

таким образом, мои методы контроллера обрабатывают вход и выход с моделями. не будет представлений, потому что мне просто нужно вернуть данные/результат из моделей. и он может просто использовать мои функции "API".

Это возможно?

потому что я просто знаю, как получить доступ к методам контроллера с помощью веб-браузера. и я думаю, что он не может использовать заголовок (местоположение) для доступа к ним.

все предложения, чтобы сделать это возможным, приветствуются! даже другие подходы, позволяющие мне использовать CI для разработки. возможно, уже есть лучшие практики в отношении такого межплатформенного сотрудничества?

Спасибо


person never_had_a_name    schedule 22.04.2010    source источник


Ответы (1)


MVC, похоже, разошлись в своем определении. Это определение, которое я предлагаю, должно быть идеальным для вас.

Модели — это то место, где вы строите бизнес-конец приложения. Такие операции, как create_contact, delete_contact и get_contact, относятся к слою модели. Уровень модели — это то, что создает API вашего приложения, и он должен быть полностью независимым.

Рассматривайте контроллеры исключительно как кукловодов пользователя. Контроллеры принимают пользовательский ввод — проверка, очистка и многое другое может быть выполнено в другом месте — и вызывают API, который вы уже настроили на уровне модели. Кроме того, контроллеры затем определяют, какое представление использовать — каким бы сложным или простым ни был уровень представления.

Слой представления обычно не вызывает затруднений. Пока вы используете только операции чтения в представлении, все должно быть в порядке.

Чтобы уточнить, если пользователь хочет создать новый контакт, контроллеру может потребоваться метод с именем create_contact, который принимает соответствующий ввод. Однако фактическая операция по созданию контакта должна выполняться на уровне модели. Это позволит вашему другому разработчику повторно использовать ту же операцию в совершенно другом приложении, загрузив вашу модель, которая уже была разработана как независимая сущность.

person erisco    schedule 22.04.2010
comment
проблема в том, что приложение имеет дело с базой данных и задействовано много классов. и файлы конфигурации. Файлы доктрины и т. д., он превращается в приложение, а не просто в класс, который он может использовать. Для меня лучше использовать CI для его разработки, а затем как-то портировать ему, чтобы он мог использовать методы обработки контактов в адресной книге. Я думал, что для решения этой проблемы контроллер будет действовать как методы API. но я не уверен, как это сделать, как мое приложение может интегрироваться с его. я не думаю, что включение index.php заставит его все работать. идеи? - person never_had_a_name; 22.04.2010
comment
Независимо от базовой механики, должно быть идеальное разделение между тем, что принадлежит слою модели, а что нет. Операции с базой данных определенно являются частью уровня модели. Конфигурации уровня модели не следует смешивать с конфигурациями контроллеров и представлений. Когда уровень модели действительно является собственным, ничто иное, как загрузочный файл, не позволит вашему другому разработчику использовать его. - person erisco; 23.04.2010
comment
+1 эриско за то, что заставил меня почувствовать себя умным. Почитав о MCV и разработав на его основе свою собственную систему, я заметил, что многие люди описывают модели и контроллеры совершенно бессмысленно. Я беспокоился, что делаю это неправильно, но ваше описание дало мне веру в то, что я попал прямо в цель. Спасибо, это меня беспокоило. - person Syntax Error; 23.04.2010
comment
Хотя это прекрасное описание разделения кода в MCV, действительно ли это точный ответ на вопрос Эйси? Я думаю, Ajsie говорит, что у его клиента есть приложение, отличное от CodeIgniter, и он хочет, чтобы это приложение использовало контроллеры и модели приложения CodeIgniter. CodeIgniter ожидает использования URL-адреса. Простое включение файла index.php или файла CodeIgniter не даст желаемого результата. Я предлагаю вам настроить приложение CodeIgniter как службу, которую приложение без CI может вызывать через cUrl или file_get_contents(). - person Natebot; 25.04.2010