Хранение информации о полях таблицы для класса - PullRequest
0 голосов
/ 28 апреля 2011

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

Посмотрите на этот код:

protected $_visible_array = array(0 => 'No', 1 => 'Yes');

protected $_type_array = array(1 => 'Small', 2 => 'Medium', 3 => 'Large');

public function field_array() {
    $array['visible'] = info_array('cmp_visible', 'int', 'Visible', $_visible_array);
    $array['type'] = info_array('cmp_type', 'int', 'Type', $_type_array);
    $array['name'] = info_array('cmp_name', 'string', 'Name');
    $array['desc'] = info_array('cmp_desc', 'string', 'Description');
    return $array;
    }

Моя функция info_array в основном создает массив из 4 параметров с индексами «столбец», «тип», «метка», «опции», чтобы впоследствии я мог легко получить эти значения.

Первый вопрос, который у меня возникает, - возможно ли иметь что-то вроде:

protected $_options['visible] = array(0 => 'No', 1 => 'Yes');

Таким образом, мне не нужно было бы передавать этот 4-й параметр в функцию info_array, так как я мог бы получить доступ к этому массиву, используя «видимый» индекс Проблема в том, что я получаю ошибки PHP при попытке этого, не знаю почему ...

В настоящее время у меня есть методы get для всех моих свойств, но мне было интересно, хорошо ли иметь что-то вроде следующего:

    public function get($field) {
    return $this->$field;
    }   

Я хочу использовать индекс из моего field_array для получения значения этого свойства.

1 Ответ

0 голосов
/ 28 апреля 2011

То, что вы предлагаете, звучит как хороший план.

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

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

Тогда вашему конкретному классу нужно будет только определить метаинформацию для полей, и все готово.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...