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.

Вопрос: как сделать так, чтобы из класса можно было обратиться к этой переменной?
  • Вопрос задан
  • 1215 просмотров
Пригласить эксперта
Ответы на вопрос 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:
Но вообще это криво, и за такое руки отрывают. Передавай нужные данные через конструктор или сеттеры, но никак не глобальными переменными.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы