Лучшая версия должна, конечно, использовать встроенный путь:
string Tabs(int len) { return new string('\t', len); }
Из других решений, предпочтите самое легкое; только если это оказывается слишком медленным, боритесь за более эффективное решение.
, Если Вы используете Ерунда: конечно, вышеупомянутый код более эффективен. StringBuilder
и знаете его получающуюся длину заранее, тогда также, используйте соответствующего конструктора, это намного более эффективно, потому что это означает, что только одно трудоемкое выделение происходит, и никакое ненужное копирование данных.
По сути, у вас есть три подхода к этой проблеме (один из которых я немедленно устраню):
Для простоты я обычно рекомендую (2). Итак, когда у вас есть таблица:
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
type VARCHAR(10),
name VARCHAR(100)
);
, где тип может быть «АГЕНТ» или «ВЕДУЩИЙ» (например). В качестве альтернативы вы можете использовать односимвольные коды. Затем вы можете начать заполнять пробелы с помощью объектной модели:
и он должен встать на место довольно легко.
Что касается того, как загрузить в одном операторе, я бы использовал какой-то завод. Предполагая эти базовые классы:
Будет ли у вас когда-нибудь пользователь, который не является лидером или агентом? Действительно ли этому классу действительно нужно извлекать данные из базы данных?
Если это так, почему бы не вставить SQL-запрос в функцию, которую вы можете переопределить при создании дочернего класса.
Не могли бы вы унаследовать, скажем, скелет 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();
?>
] Как видите, мой пример не впечатляет, но должен позволить вам увидеть, к чему я клоню. Если ваш запрос между подклассами очень похож, то я думаю, что мое предложение может сработать.
Очевидно, потребуется некоторая настройка, но, вероятно, я бы выбрал именно такой подход.