Я работаю над системой управления контентом для моей жены, которая хочет создать сайт, и у меня есть способ, которым я всегда занимался в прошлом, но хочу доставить лучшие процедуры кодирования, так что это моя дилемма.Объявление нового класса() начало класса
Это код, который я использовал в прошлом, который я знаю, работает.
class accounts {
public function CheckAccountLogin() {
global $db;
$query = <<<SQL
SELECT id,gaToken
FROM accounts
WHERE password_hash = :hashedpw
SQL;
$resource = $db->sitedb->prepare($query);
try {
$resource->execute(array (
':hashedpw' => sha1($_POST['user-name'].':'.$_POST['user-pass']),
));
if($resource->rowCount() == 0) { echo false;}
else {
foreach($resource as $row) {
$this->authkey = $row['gaToken'];
if($this->authkey == "") {
self::SetSession();
}
else {
self::CheckAuth();
}
}
}
catch(PDOException $e) {
echo $e->getMessage();
}
}
}
Теперь каждая функция должна global $db
в начале функции для того, чтобы использовать $db->sitedb
или иначе мы бы об ошибке бросили наш путь, так что я хочу сделать вместо этого
class accounts {
public $db = new db();
public function CheckAccountLogin() {
$query = <<<SQL
SELECT id,gaToken
FROM accounts
WHERE password_hash = :hashedpw
SQL;
$resource = $this->sitedb->prepare($query);
try {
$resource->execute(array (
':hashedpw' => sha1($_POST['user-name'].':'.$_POST['user-pass']),
));
if($resource->rowCount() == 0) { echo false;}
else {
foreach($resource as $row) {
$this->authkey = $row['gaToken'];
if($this->authkey == "") {
self::SetSession();
}
else {
self::CheckAuth();
}
}
}
catch(PDOException $e) {
echo $e->getMessage();
}
}
}
Таким образом, во всех моих новых функциях я могу просто объявить $this->sitedb
всякий раз, когда мне нужно подключиться к базе данных. С приведенным выше кодом мне дают Parse error: syntax error, unexpected 'new' (T_NEW) in /var/www/html/functions.d/accounts.class.php on line 3
. Я знаю, где проблема, я просто ищу более чистый способ, чем мой первый блок кода. Любая помощь в том, чтобы это правильно работало, будет очень признательна.
использовать инъекцию зависимостей или сделать класс модели одноэлементного –