$this
не особенно полезен вне класса.Как только вы узнаете о классах , вы можете вернуться на тот сайт, который вы нашли.
Если вы хотите использовать addUser()
, вам нужен класс, в котором свойство класса $pdo
являетсяэкземпляр класса PDO , а свойство класса $statement
является экземпляром PDOStatement
На предыдущей странице был показан скрипт с именемdatabase.php
содержит класс DB
, модель в шаблоне проектирования модель-представление-контроллер .Он соответствует требованиям, указанным выше.
Самый прямой способ запустить его в работу - добавить определение класса DB
в сценарий и поместить в него определение функции addUser()
.
Как только вы это настроите, и когда вы узнаете о наследовании , вы можете рассмотреть возможность сохранения класса DB
в вашем скрипте, но оставить его, как вы его нашли, без addUsers()
.Вы все еще можете использовать и добавлять к нему, если вы extends
это:
class User extends DB
{
function addUser($name, $password)
{
$hash = md5($password);
$sql = "INSERT INTO `user` (`username`, `pass`) VALUES ('$name','$password')";
$this->stmt = $this->pdo->prepare($sql);
return $this->stmt->execute([$name, $hash]);
}
}
Имейте в виду, что если вы выберете этот подход, вам нужно будет изменить DB::$pdo
и DB::$stmt
с private
в protected
:
class DB
{
protected $pdo = null;
protected $stmt = null;
/* keep the rest of the class the same */
Это потому, что свойства класса private
не могут использоваться («видимыми») классом, расширяющим первый класс, но свойства класса protected
являются.Это часть концепции под названием visibility .