У меня возникли проблемы с получением глобального массива в моем расширенном классе. Массив заполняется параметрами, которые передаются с использованием URL-адреса.PHP Почему мой массив globals пуст в моем расширенном классе
Я получаю свой url, а затем взорву его. Затем я устанавливаю первые два параметра классу и методу. Затем повторно базы моих ключей массива так начинаются параметры в 0.
Например:
class App
{
protected $controller = '';
protected $method = '';
protected $param = [];
public function init()
{
if (isset($_GET['url'])) {
$url = explode('/', filter_var(trim($_GET['url'], '/'), FILTER_SANITIZE_URL));
}
else
{
header('Location: /home');
}
if (file_exists(APP . '/controllers/' . $url[0] . '.php'))
{
$this->controller = $url[0];
unset($url[0]);
}
else
{
if (DEVELOPMENT == true) {
var_dump($url);
}
else
{
header('Location: /home');
}
}
require_once 'controllers/' . $this->controller . '.php';
$className = ucfirst($this->controller);
$class = new $className;
if (isset($url[1]))
{
if (method_exists($className, $url[1]))
{
$this->method = $url[1];
unset($url[1]);
$methodName = $this->method;
$class->$methodName();
}
}
$GLOBALS['param'] = array_values($url);
}
public function view($view)
{
require_once VIEW . '/header.htm';
require_once VIEW . '/' . $view . '.htm';
require_once VIEW . '/footer.htm';
}
}
Так что, если мой URL является сайт/класс/метод/Foo/бар, и я свалка $ GLOBALS [ «параметров» ] Я получаю
array (size=2)
0 => string 'foo' (length=3)
1 => string 'bar' (length=3)
Что хорошего и чего я хочу.
Однако, если я сделаю такую же свалку в своем расширенном классе.
class User extends App
{
public function __construct()
{
var_dump($GLOBALS['param']);
}
}
Мой массив пуст. На самом деле я пытаюсь получить параметры с URL-адреса в любом классе контроллера и использовать их. Как я могу это сделать?
Вам действительно нужно использовать [инъекцию зависимости] (HTTP: //stackoverflow.com/documentation/php/779/dependency-injection) вместо глобального – Machavity
Я знал это! Я имею в виду, что я знал, что делаю это неправильно, используя глобальные переменные. Тем не менее, я все еще участвую в учебе и инъекции зависимостей, все еще запутываю меня. Если не так много спросить, не возражаете ли вы опубликовать пример, который имеет отношение к моей ситуации? Извините заранее, я очень медленный ученик. – badsyntax
Где вы получаете '$ url'? –