В моем проекте у меня есть класс базы данных, который я использую для обработки всего материала MySQL. Это соединяется с базой данных, запросами выполнений, фиксирует ошибки и закрывает соединение.
Теперь я должен создать членскую область на своем сайте, и я собирался создать пользовательский класс, который обработает регистрацию, вход в систему, изменения/сброс пароля/имени пользователя и выходить из системы. В этом пользовательском классе я должен использовать MySQL по очевидным причинам..., который является тем, для чего был сделан мой класс базы данных.
Но я смущен относительно того, как я использовал бы свой класс базы данных в моем пользовательском классе. Я хотел бы создать новый объект базы данных для своего пользовательского класса и затем иметь его близко каждый раз, когда метод в том классе закончен? Или сделайте я так или иначе делаю 'глобальный' класс базы данных, который может использоваться всюду по моему всему сценарию (если это верно, я нуждаюсь в помощи с этим, никакая идея, что сделать там.)
Спасибо за любую обратную связь можно дать мне.
Простой, трехэтапный процесс. 1 / Создайте объект базы данных. {{1} } 2 / Передайте его конструктору пользовательского класса. 3 / Используйте его в пользовательских методах.
Маленький пример.
Файл Database.class.php:
<?php
class Database{
public function __construct(){
// Connects to database for example.
}
public function query($sqlQuery){
// Send a query to the database
}
[...]
}
В User.class.php:
<?php
class User{
private $_db;
public function __construct(Database $db){
$this->_db = $db;
}
public function deleteUser(){
$this->_db->query('DELETE FROM Users WHERE name = "Bobby"');
}
}
Теперь, например, в userManager.php:
<?php
$db = new Database();
$user = new User($db);
// Say bye to Bobby :
$user->deleteUser();
Если вам нужно текущее модное название этой старой техники, погуглите "Dependency" Инъекция ». Паттерн Синглтон в php скоро исчезнет.
Что мне нравится делать, так это создавать класс базы данных с учетом шаблона Singleton . Таким образом, если у вас уже есть объект базы данных, он просто извлекает его, в противном случае создает новый. Например:
Database.class.php
class Db
{
protected static $_link;
private function __construct()
{
// access your database here, establish link
}
public static function getLink()
{
if(self::_link === null) {
new Db();
}
return self::_link;
}
// etc.
}
User.class.php
class User
{
protected $_link; // This will be the database object
...
public function __construct()
{
$this->_link = Db::getLink();
}
}
И теперь вы можете использовать свойство $ _ link
пользователя
для выполнения функций базы данных, таких как $ this -> _ link-> query (.. .)
. Вам не обязательно помещать Db :: getLink ()
в конструктор, если вашему классу не нужно так много взаимодействовать с базой данных.
Поскольку вы используете базу данных как объект, почему бы просто не добавить к объекту методы, которые ваш «класс пользователей» может использовать для выполнения необходимых действий. Класс пользователей может содержать указатель на класс базы данных. Класс базы данных будет защищать вашу базу данных и гарантировать, что класс пользователей использует ее надлежащим образом.
Как он сказал, поместите все свои функции в класс базы данных и используйте объект базы данных для доступа к этим функциям из вашего пользовательского класса. Это должен быть лучший метод в вашем случае.
Например:
global $ database;
userclassvar = $ database-> doSomething (); {{1 }}