Я использую Codeigniter для создания веб-приложения и пытаюсь следовать правилам OOP, MVC и Codeigniter. Несколько вещей определенно ускользают от меня. Ниже приведено упрощенное объяснение того, что меня смущает.
У меня есть таблица 'companies' и модель Companies_model. Эта модель имеет закрытые переменные, такие как id, name и url. Эта модель имеет метод с именем load_data ($ id), который использует идентификатор для загрузки всех данных о компании в переменные класса. Этот $ id идет от URL. Наконец, эта модель имеет открытые методы получения, которые возвращают значения.
У меня есть страница профиля на моем сайте для каждой компании в моей системе. В контроллере Companies я загружаю данные этой компании следующим образом.
$this->load->model( 'Companies_model', 'Companies_profile' );
$this->Companies_profile->load_data( $this->uri_company_id );
Когда моя другая логика завершена в контроллере, у меня есть следующий код для рендеринга представления:
$this->data['Companies_profile'] = $this->Companies_profile;
$this->load->view( 'profiles/companies_profile_view', $this->data );
На мой взгляд, я отображаю данные следующим образом:
<p>This company's name is <?php echo $Company_profile->get_name(); ?>.</p>
Все это кажется излишним. Почему я передаю данные в представление, когда оно уже доступно в конкретном экземпляре Companies_method? Я чувствую растерянность и что я делаю что-то не так, но я не могу понять, что это такое. Возможно, я не делаю ничего плохого, но еще не столкнулся с причиной некоторых из этой структуры. В целом, мое приложение довольно простое. Может кто-то пролить свет на то, как правильно организовать и передать данные в представления? Зачем передавать данные, а не просто делать их доступными в базовом классе CI, $ this?
ПРИМЕЧАНИЕ. У меня есть несколько экземпляров Companies_model на каждой странице, которую я отображаю, потому что у меня есть список связанных компаний на каждой странице профиля.