"Я не понимаю вашего вопроса. В User-> login () просто поместите ваш PDO
логика. "- Разве мне не нужно загружать в DBH как-то в классе?
Нет единого ответа на это! Если ваш класс собирается выполнять логику (практически говоря, выполняя mysql_query), вам нужно предоставить обработчик соединения.
С другой стороны, ваш класс не выполняет запрос, но выполняет, например, некоторые задачи, такие как: создание запросов, применение логики, проверка правильности данных запроса, предоставленных пользователем, и т. Д., То нет необходимости загружать обработчик, что вызывает другому классу это понадобится.
Я все еще верю, что подобные вопросы (о дизайне) очень сложные и философские, общие и т. Д., Если они не очень специфичны, а у вас не так много.
А поскольку PDO - это класс (библиотека) или что-то еще, я не чувствую необходимости
класс базы данных (или я должен построить один)
На практике мы создаем класс базы данных, и не только для размещения там только обработчика pdo, но и потому, что есть очень много вещей, которые можно определить apriori и которые вам очень помогут.
У вас может быть не только обработчик базы данных (например, для общего пользования и для внутреннего использования), у вас могут быть свои собственные методы, проверяющие это из старого проекта:
public function getValueLike($dbh, $table,$col_name, $value )
{
$col_name = '`'. $col_name . '`';
$sql = 'SELECT '. $col_name .' FROM '. $table .' where '. $col_name ." like ? limit 2" ;
//prepare,execute
$stmt = $dbh->prepare($sql );
$stmt->execute(array('%'.$value.'%'));
//we want it is an array with int keys
$stmt->setFetchMode(PDO::FETCH_NUM);
$tmp = $stmt->fetchAll(); //get all values
$res[] = $tmp[0];//get the first value
$res[] = count($tmp);//get the count
//return the 1st value found, also the count which at most can be 2
return $res ;
}
все эти вещи, включая имена пользователей, пароли, серверы баз данных и т. Д., Не было бы неплохо находиться в одном месте (вместо того, чтобы распространяться) под классом, который легко доступен, может применять ограничение доступа и т. Д. некоторые аргументы, чтобы оправдать мою точку зрения.
Если вы решили построить класс, вы вызываете его только один раз в самом начале, а затем просто передаете объект.
Выберите MVC, выберите хороший, структура в основном предопределена, и это заставит вас применить некоторые интересные вещи и сделает вас лучшим программистом.
Что касается обработчика базы данных, я предлагаю, как минимум, сделать его одноэлементным (статическим объектом) и передавать объект по мере необходимости, еще лучшим решением является использование нестатического способа с использованием реестра. Где вы только передаете объект реестра где-нибудь, и все, что вам нужно, доступно. Если вы не можете войти в MVC, попробуйте создать собственный реестр, это сэкономит много времени.
Там есть хорошие уроки !!