два php объекта, использовать функцию от другого? область видимости переменной объекта? - PullRequest
0 голосов
/ 13 апреля 2020

Может быть, я потерял его, но что я здесь не так делаю? Я получаю неопределенную переменную «база данных» при вызове метода маршрута ...

class database {
    function connect() {
        echo("connecting database");
    }
}

class router {
    function route() {
        $database->connect();
        echo("then do some routing");
    }
}

$database = new database;
$router = new router;

$router->route();
  • Разве ссылка на объект $ database в объекте $ router не должна возвращаться к глобальной? ?
  • Действительно ли мне нужно передавать объект базы данных, когда я вызываю метод route?
  • Что, если у объекта базы данных будет куча методов, я буду передавать все из них всякий раз, когда я вызвать метод маршрута?

1 Ответ

0 голосов
/ 13 апреля 2020

Маршрутизатор класса не может видеть переменную $ database, вы можете передать ее по параметру при вызове функции

    class router {
        function route($database) {
            $database->connect();
            echo("then do some routing");
        }
    }

    $database = new database;
    $router = new router;

$router->route($database);

или, возможно, вы можете определить $ database как глобальную переменную

class router {
    function route() {
        global $database;
        $database->connect();
        echo("then do some routing");
    }
}

$database   = new database;
$router = new router;

$router->route();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...