eucalipt
@eucalipt
Самоделкин.

Почему переменная не видна из класса?

Есть файл index.php.
В самом его начале идет spl подключение классов:
// auto class loading
spl_autoload_register(function ($class) {
	$RF = $_SERVER['DOCUMENT_ROOT'];
	include($RF . "/rack/classes/" . $class . ".class.php");
});


Ниже идут простые include'ы для подключения различных файлов конфигурации.
В одном из этих файлов есть массив $known_words.

Почему из файла index.php я могу получить к нему доступ, а из подключенных классов - нет? (Проверял var_dump'ом).

Странно то, что в другом проекте все получалось, правда там надо было получить не переменную (массив) а результат вызова функции.

UP.
Файлы конфигурации - простые файлы, такие же, как и остальные. Не обращайте внимание на то, как я их называю, тут это не важно.

В одном из этих файлов лежит массив ($known_words). Если я обращаюсь к нему из индексного файла, то все прекрасно получается. Если же я обращаюсь к нему из файла, в котором лежит класс, то он эту переменную не видит, для него она пустая - null.

Вопрос: как сделать так, чтобы из класса можно было обратиться к этой переменной?
  • Вопрос задан
  • 1201 просмотр
Пригласить эксперта
Ответы на вопрос 2
denisandroid
@denisandroid
BASH ,PHP , MYSQL, C++, JAVA . (PHP, JAVA,MYSQL)
А что вы передаете в $class?
Опишите ваш запрос к классу.
Ответ написан
Denormalization
@Denormalization
Потому что область видимости не та.

Попробуй указать global $var; в той функции из которой ты хочешь получить доступ к глобальной переменной.

Т.е:
file1.php:
<?php

$my_var = [1, 2, 3, 4];


file2.php:
<?php
require "file1.php";

class MyClass {
    public function c()
    {
        global $my_var;
        var_dump($my_var);
    }
}


PS:
Но вообще это криво, и за такое руки отрывают. Передавай нужные данные через конструктор или сеттеры, но никак не глобальными переменными.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы