Как я могу увидеть переменную метода в другом файле отображенном через require_once в этом методе

<?php

class MyClass
{
    public static function myFunction()
    {
        $myVar = 1;
        self::openPage("insert");
    }

    private static function openPage($pageName)
    {
        require_once 'views/' . $pageName . '.php';
    }
}

insert.php файл:

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
<?php echo $myVar; ?>
</body>
</html>

Как я могу увидеть переменную($myVar) в другом файле отображенном через require_once? Ошибка: Undefined variable '$myVar';


Ответы (1 шт):

Автор решения: splash58

У вас переменная вне зоны видимости. Вот так будет работать, если мы такую переменную создадим или передадим в openPage

class MyClass
{
    public static function myFunction()
    {
        $myVar = 1;
        self::openPage("insert", $myVar);
    }

    private static function openPage($pageName, $myVar)
    {
        require_once 'views/' . $pageName . '.php';
    }
}

некоторые фреймворки для этих целей используют функции compact() и extract(). Примерно так

class MyClass
{
    public static function myFunction()
    {
        $myVar = 1;
        self::openPage("insert", compact('myVar'));
    }

    private static function openPage($pageName, $vars)
    {
        extract($vars);
        require_once 'views/' . $pageName . '.php';
    }
}
→ Ссылка