CodeIgniter - Версионные библиотеки и модели - PullRequest
0 голосов
/ 16 августа 2011

Я создал веб-API с использованием CodeIgniter и собираюсь представить обновленную версию.Итак, допустим, вы можете сделать в него следующие вызовы:

mysite.com/api/v1.0/get_customers
mysite.com/api/v2.0/get_customers

(Предположим, я использую маршруты, чтобы добраться до нужной версии контроллера).

У меня есть структура библиотеки CIнапример:

controllers/
   + 1.0/
      + Api.php
   + 2.0/
      + Api.php
libraries/
   + 1.0/
      + Customer.php
   + 2.0/
      + Customer.php
models/
   + 1.0/
      + Customer_model.php
   + 2.0/
      + Customer_model.php

Теперь предположим, что поступил вызов v1.0, и я загружаю контроллер 1.0, который загружает библиотеку 1.0 и модель.После этого поступает вызов v2.0, и я загружаю все версии 2.0 ...

Будет ли CI распознавать, что путь к классам 1.0 отличается от классов 2.0, и перезагружать их (вместо того, чтобы думатьони уже загружены, потому что у них одно и то же имя класса (на самом деле это версия 1.0)?

Как люди справляются с этим?Нужно ли использовать разные имена классов, например:

class Customer_1_0
class Customer_2_0
class Customer_model_1_0
class Customer_model_2_0

Надеюсь, нет ... Есть ли более чистый способ сделать это?Я чувствую, что мне здесь не хватает чего-то фундаментального.

Спасибо, Стив

1 Ответ

0 голосов
/ 16 августа 2011

Когда CI ищет класс, он просматривает запрос по запросу (загрузка <domain>/foo/bar, затем <domain>/foo/bar снова все равно перезагрузит класс Foo, если у вас нет кэширования какой-либо формы ) и завершается, когда чувствует, что у него есть соответствующие классы (что хорошо, потому что, если он будет слишком агрессивным, это вызовет столкновения).

Если ваша заданная версия CI знает, в какой каталог она должна смотреть, у вас не должно возникнуть проблем. Конечно, если у вас есть две версии одного и того же класса в одном файле, это вообще не сработает в PHP.

...