Задать вопрос
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.

Вопрос: как сделать так, чтобы из класса можно было обратиться к этой переменной?
  • Вопрос задан
  • 1223 просмотра
Подписаться 2 Оценить 2 комментария
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 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:
Но вообще это криво, и за такое руки отрывают. Передавай нужные данные через конструктор или сеттеры, но никак не глобальными переменными.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽