Я новичок в Codeigniter, хотя у меня есть около 2 лет опыта работы с PHP. Я прошел через документацию Codeigniter, и я создал несколько простых примеров, но теперь я перехожу к реальному проекту, и я хочу убедиться, что я ухожу на правую ногу.Каков правильный способ включения классов/контроллеров/библиотек в CodeIgniter?
В этом разделе: Я создаю одностраничное игровое приложение, и на этой странице будет много динамических/DB-данных. Я создал контроллер и представление для страницы, до сих пор все это очень просто:
//controller (application/controllers/main.php)
class Main extends CI_Controller {
public function index()
{
$this->load->model('Model'); //load DB abstraction model
$this->load->helper('url'); //load URL helper (base_url() function etc)
$data = array("somestuff","otherstuff");//some general data for the page
$this->load->view('header');
$this->load->view('mainview', $data);
$this->load->view('footer');
}
}
//view (application/views/mainview.php)
<div id="container">
<div id="tab1">
some data related to logged in user
</div>
<div id="tab2">
some data related to game
</div>
</div>
Теперь вы видите, мы можем разделить данные, которые должны отображаться на странице на две группы - пользовательские данные и Данные Приложения. Естественным ООП подход будет заключаться в следующем:
1) создать один класс пользователя и использовать функцию в том, что для извлечения и отображения пользовательских данных (загрузка модели, а так как мы используем MVC)
2) создать один или несколько классов, связанных с игрой, и использовать их для расчета и отображения текущих игровых данных.
Для простоты предположим, что мне нужен только один класс игры.
У меня возникли проблемы с тем, что я думаю о правильном подходе CodeIgniter к этому. В руководстве пользователя упоминаются созданные пользователем библиотеки, созданные пользователем контроллеры и созданные пользователем классы. Библиотеки для меня немного путают, так как я не понимаю, как они здесь меняются.
Поскольку у меня уже есть контроллер для страницы (я думаю, что это естественный подход, но, пожалуйста, поправьте меня, если я ошибаюсь), как мне интегрировать классы User/Game? У меня есть несколько конкретных вопросов, которые помогут мне понять это прямо в моей голове.
1) Должны ли пользователи/игры быть новыми контроллерами, расширяющими CI_Controller?
2) Следует ли размещать классы в каталоге «библиотеки» или непосредственно в контроллере?
3) Какое отношение они должны иметь к Главному контроллеру (при условии, что я был прав в создании его в первую очередь)?
Итак, если я правильно понимаю (с упором на пользователя, например), вы говорите, что я должен создать класс пользователя в качестве библиотеки, а затем создать объект '$ User' в MainController и использовать методы пользователя оттуда вернуть необходимые данные? – jovan
Да, но создайте объект, если у вас несколько «Пользователь», как массив объекта «Пользователь», в другом случае загрузите класс с помощью CI Loader. – Aurel
Пользователь - зарегистрированный пользователь, поэтому в любой момент времени есть только один. – jovan