Наследование PHP и MySQL

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

string Tabs(int len) { return new string('\t', len); }

Из других решений, предпочтите самое легкое; только если это оказывается слишком медленным, боритесь за более эффективное решение.

, Если Вы используете StringBuilder и знаете его получающуюся длину заранее, тогда также, используйте соответствующего конструктора, это намного более эффективно, потому что это означает, что только одно трудоемкое выделение происходит, и никакое ненужное копирование данных. Ерунда: конечно, вышеупомянутый код более эффективен.

6
задан SpaDusA 27 July 2009 в 15:13
поделиться

3 ответа

По сути, у вас есть три подхода к этой проблеме (один из которых я немедленно устраню):

  1. Одна таблица на класс (это тот, который я исключу),
  2. Тип записи с необязательными столбцами; и
  3. Тип записи с дочерней таблицей в зависимости от типа, к которому вы присоединяетесь.

Для простоты я обычно рекомендую (2). Итак, когда у вас есть таблица:

CREATE TABLE users (
  id INT AUTO_INCREMENT PRIMARY KEY,
  type VARCHAR(10),
  name VARCHAR(100)
);

, где тип может быть «АГЕНТ» или «ВЕДУЩИЙ» (например). В качестве альтернативы вы можете использовать односимвольные коды. Затем вы можете начать заполнять пробелы с помощью объектной модели:

  • У вас есть родительский класс User;
  • У вас есть два дочерних класса: Lead и Agent;
  • Эти дочерние элементы имеют фиксированный тип.

и он должен встать на место довольно легко.

Что касается того, как загрузить в одном операторе, я бы использовал какой-то завод. Предполагая эти базовые классы:

7
ответ дан 17 December 2019 в 00:12
поделиться

Будет ли у вас когда-нибудь пользователь, который не является лидером или агентом? Действительно ли этому классу действительно нужно извлекать данные из базы данных?

Если это так, почему бы не вставить SQL-запрос в функцию, которую вы можете переопределить при создании дочернего класса.

0
ответ дан 17 December 2019 в 00:12
поделиться

Не могли бы вы унаследовать, скажем, скелет SQL, а затем использовать функцию в каждом подклассе для выполнения запроса в соответствии с его потребностями?

Используя действительно простой пример:

<?php
//our query which could be defined in superclass
$query = "SELECT :field FROM :table WHERE :condition";

//in our subclass
$field = "user, password, email";
$table = "agent";
$condition = "name = 'jim'";

$dbh->prepare($query);
$sth->bindParam(':field', $field);
$sth->bindParam....;//etc

$sth->execute();
?>

] Как видите, мой пример не впечатляет, но должен позволить вам увидеть, к чему я клоню. Если ваш запрос между подклассами очень похож, то я думаю, что мое предложение может сработать.

Очевидно, потребуется некоторая настройка, но, вероятно, я бы выбрал именно такой подход.

0
ответ дан 17 December 2019 в 00:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: