Структурные функции в Codeigniter - PullRequest
1 голос
/ 12 октября 2011

Я пытаюсь структурировать свои функции в codeigniter, чтобы быть в курсе событий.В основном я могу сделать что-то вроде этого:

$this->my_model->get_everything();
$this->my_model_db->write_all();

Но, конечно, я в конечном итоге создаю и загружаю много файлов.Я бы предпочел структурировать его, как мой JS-код, и расширить мои модели:

$this->my_model->db->write_all();

Это наиболее логичное и удобочитаемое для меня решение.Я попробовал это, но я не так хорош с объектами и классами PHP (пока).Есть ли простой способ добиться этого?Или есть более практичное решение?Спасибо!

1 Ответ

4 голосов
/ 12 октября 2011

Я думаю, что вы делаете это задом наперед.

Вы можете создать несколько моделей, которые расширяют встроенный класс CI_Model с помощью требуемых общих функций. Затем вы можете наследовать эти новые классы для конкретных реализаций.

Например, допустим, вы работаете с именем таблицы базы данных Аккаунты

Сначала создайте класс, расширяющий CI_Model, который содержит общие функции для работы с набором данных (CI_DB_Result, массив моделей, массив массивов и т. Д.). Что-то вроде:

abstract class table_model extends CI_Model
{
  function __construct()
  {
    parent::__construct();
  }

  public function write_all()
  {
    // do some stuff to save a set of data
    // maybe add some logging in here too, if it's on development
    // and how about some benchmarking for performance testing too
    // you get the idea
  }
}

Затем создайте класс, который расширяет table_model, но с функциями, специфичными для таблицы Accounts .

public class accounts_model extends table_model
{
  function __construct()
  {
    parent::__construct();
  }

  public function get_everything()
  {
    // whatever it takes to get everything...
  }
}

Наконец, вы можете делать такие вещи, как ...

$this->account_model->get_everything();
$this->account_model->write_all();

И если у вас есть другая модель (my_model), вы также можете сделать:

$this->my_model->get_just_a_few_things();
$this->my_model->write_all();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...