include и передача переменных

zdlr

Новичок
Добрый день.

Научите как правильно делать. На сайте php.net если почитать документацию по include то можно увидеть примеры как в одной файле есть установленная переменная, а в другом этот файл инклудится и делается например echo $a;

А меня немного обратный ход, который работа на одном хостинге, а на другом 1&1.fr не хочет.

Например у меня есть файл следующего содержания:

PHP:
$a = 1;

include("b.php");
А в файле b.php у нас такое:

PHP:
echo $a;
Во первых на хостинге на котором работало все, невозможно было переменную $a вывести если ее не обозначить как глобальную echo $GLOBALS['a'], то на втором хостинге такое впечатление что файл вообще не инклудится. Научите как правильно все это делать? Как отказаться в таких случаях от глобальных переменных?

Или еще пример, схожий с этим только на ООП, файл 1.php

PHP:
include("class.php");
$a = new Class();

if($a->who == 1){
$a->where = 2;
include("next.php");
}
А в next.php такое:

PHP:
include("class.php");
$с = new Class();

if($a->where == 2){
$c->complete();
}
Вот во втором случае тоже будет не очень работать если не сделать так: global $a; А как бы с глобальными не правильно работать. Как грамотно все это делать?

Спасибо за ваше время и ответы.
 

Фанат

oncle terrible
Команда форума
Научите как правильно все это делать?
Легко.
Взять код, который ты здесь написал, вставить в файлы и запустить.

И впредь задавать вопросы не в форме "ну я вам тут накидал кое-какой код, а на самом деле у меня все по-другому", а подумав сначала - соответствуют ли твои выводы действительности.

Подсказка: никакая особенная техника для передачи переменных при инклюде не требуется. Инклюд полностью идентичен копипасту того же самого кода в тело вызывающего файла.
 

Фанат

oncle terrible
Команда форума
а проблема, соответственно, не в инклюде, а в области видимости.
Переменная либо объявляется, либо читается внутри функции. Поэтому и требуется global

Чтобы решить проблему на втором хостинге, нужно более внятное описание симптомов, чем "такое впечатление, что ничего не инклудится".
Но в принципе, обе проблемы показывают недостаток отладки.
 

zdlr

Новичок
Я хотел просто для себя разобраться как обойтись без глобальных переменных. Для того форум и должен быть чтоб спросить совета как правильно работать.

Я сейчас освободился, попробую потестить то что есть и описать симптомы если не против форумчане более подробно.

Вообще данный кусок кода что сейчас у меня перестал работать работал до того пару лет так точно на разных хостингах, а на французском 1и1 не хочет.

Суть вопроса в тот как я загружаю файл через ajax. Когда пользователь выбирает файл для загрузки, скрипт сразу по средство POST запроса отправляет файл на определенный скрипт. Скрипт принимает сам файл и пару настроек, одна из которых модуль с котором скрипт будет работать. По имени модуля - подгружается сам модуль, инициализируется среда, куда будет файл сброшен по окончании загрузки и все такое. Но так как файл часто бывает графический, чтоб не прописывать прям в скрипте параметры как его обрезать, или еще что с ним сделать, после загрузки исходник помещается в директорию загрузки и подключается еще один модуль - по сути тот же что и при инициализации в который уже передается имя финального файла, и переменная например upload - по наличии которой в модуле я проверяю что пришел запрос на файл, и есть ли для него правила обрезки, уменьшения размера и все такое.

Так вот всегда такая схема работала, а на новом хостинге нет. Начал проверять - все доходит до места где должен подгружаться модуль повторно, для передачи в него файла - и куку, никаких движений. Как будто файл не инклудится вообще.

Попробую разобраться и напишу.
 
Сверху