Не удалось получить доступ к другому классу

108
8

Моя проблема в том, что когда я запускаю этот код:

<?php
require_once('classes/class.users.php');

use Users\UserService;
use Users\UserMapper;

if(isset($_POST['login'])) {
$result = $userService->handleUserLogin($_POST['username'], $_POST['password']);
}
?>

Я получаю эту ошибку:

Notice: Undefined variable: userMapper in C:\xampp\htdocs\Projects\SMS\classes\class.users.php on line 8

Fatal error: Call to a member function checkLogin() on a non-object in C:\xampp\htdocs\Projects\SMS\classes\class.users.php on line 8

Мой полный класс: http://pastebin.com/8nahRnrT

спросил(а) 2021-01-25T16:20:04+03:00 5 месяцев назад
1
Решение
133

Спасибо Ронни за то, что он помог мне.

Я просто удалил класс DB, и вместо этого я сделал экземпляр класса mysqli и передал его классу UserMapper. Я также передал экземпляр класса UserMapper в класс UserService и устранил проблему.

$db          = new mysqli('localhost', 'root', 'php123', 'sms');
$userMapper = new UserMapper($db);
$userService = new UserService($userMapper);

ответил(а) 2021-01-25T16:20:04+03:00 5 месяцев назад
-4

$userMapper->checkLogin($username, $password) === true)

эта строка, она вызывается внутри вас класса UserService.


UserMapper никогда не UserService классе UserService.

Возможно, инициируйте его в конструкторе и добавьте для него атрибут?

ответил(а) 2021-01-25T16:20:04+03:00 5 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема