Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (2) [1] 2  ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Как правильно использовать глобальные переменные?
Strannik  
 ۩  [x]    Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 806
Пользователь №: 17108
На форуме: 8 лет, 2 месяца, 16 дней
Карма: 0




Здравствуйте.

У меня возникает ошибка при использовании глобальных переменных в нескольких файлах.

Файлы:

    
-index.php
--function.php
--globals.php
--lang.php
--allfunction.php



Код index.php:

    <?
session_start();
require_once("./function.php");

select();

?>


Код function.php:

    <?php
require_once("./globals.php");
require_once(dirname(__FILE__)."/lang.php");
include_once $GLOBALS["dirang"].GetUserLanguage(3);
require_once(dirname(__FILE__)."/allfunction.php");
?>


Код globals.php:

    <?
$dirang = './';
$langfile = 'lang.php';
$test = 'hello';
}
?>



Код lang.php:

    <?  
GetUserLanguage($rem){
return $GLOBALS["langfile"]; //ex.
}
?>


Код allfunction.php:

    <?  
echo $GLOBALS["test"]; //ex.
}
?>


У меня возникает ошибка при использовании
$GLOBALS["test"]
в файле allfunction.php.

Описание ошибки
Undefened index test in allfunction.php on line ....


Подскажите почему я получаю ошибку и как правильно использовать глобальную переменную test в файле allfunction.php ?
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
bestxp  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



орангутанг
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2059
Пользователь №: 36605
На форуме: 4 года, 3 месяца, 12 дней
Карма: 113




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


--------------------
PMПисьмо на e-mail пользователюСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 16109
Пользователь №: 6543
На форуме: 8 лет, 7 месяцев, 25 дней
Карма: 303

Трезвый :
6 лет, 5 месяцев, 4 дня


bestxp
Цитата
Если нужен доступ к чему то отовсюду дам совет Замени константами.

Это хороший совет, но в константу нельзя затолкать массив или объект. Коль скоро прижало, нужно как-то обозначить их и использовать только для чтения. Допустим писать в верхнем регистре. Ведь никому не приходит на ум заявлять, что $_POST или $_GET - крайнее зло, хотя по сути это обычные глобальные переменные.


--------------------
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
sergeiss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Сидел он, дум великих полон - и вдаль глядел
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 15357
Пользователь №: 4190
На форуме: 9 лет, 3 месяца, 22 дня
Карма: 468




ПОСТ и ГЕТ - они "однонаправленные", т.е. для передачи инфы извне в скрипт. Также, как и другие суперглобальные массивы. Поэтому они "не зло" :)

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

А возможно, ТС не знает, что все переменные, определенные в файлах, становятся доступными там, где эти файлы были подинклужены? Может быть, ему этого достаточно, вместо глобальных? :)

Пример.
// есть файл tst.php
$a = 10;


// и есть файл main.php
include 'tst.php';

echo $a; // выведет 10


--------------------
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 16109
Пользователь №: 6543
На форуме: 8 лет, 7 месяцев, 25 дней
Карма: 303

Трезвый :
6 лет, 5 месяцев, 4 дня


Цитата (sergeiss @ 11.10.2013 - 04:36)
ПОСТ и ГЕТ - они "однонаправленные", т.е. для передачи инфы извне в скрипт. Также, как и другие суперглобальные массивы. Поэтому они "не зло" smile.gif

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

Кто запрещает сделать свои "однонаправленные" массвы?)) Какая разница, где они будут инициализированы, в недрах PHP или в конфиге к примеру?

Да и насчет "однонаправленности, это условно. Вполне свободно они переопределяются. Просто все привыкли, что переопределять их табу и моветон, и это правильно. Ну а почему не придерживаться тех же правил при использовании своих глобальных переменных/ Я вот с удовольствием использую $POST и $GET, и ни разу еще небыло казусов.

Что касается ошибки ТС, то судя по фигурной скобке, он чего-то недоговаривает. Скорее всего в файле globals.php переменные определены в функции и не объявлены глобальными.


--------------------
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Strannik  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 806
Пользователь №: 17108
На форуме: 8 лет, 2 месяца, 16 дней
Карма: 0




PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
inpost  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Помагите Здесь живу!!!
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 22919
Пользователь №: 20039
На форуме: 7 лет, 5 месяцев, 21 день
Карма: 607




А я видел недавно следующее:
Так как $_ENV зачастую пустой, то программист в него записывал свои глобальные переменные:
$_ENV['var'] = 'text';
И с ними работал...
Какое-то двоякое отношение к этому, пока не определился.


--------------------
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



c начала 2017 года в Новосибирске.
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 26382
Пользователь №: 21350
На форуме: 7 лет, 2 месяца, 14 дней
Карма: 737




яб $_SESSION использовал
чтоб всё в кашу не превратить $_SESSION['global'],например, как верхний уровень

MiksIr -это голоники разрабов.


--------------------
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql (TSql, BI OLAP, MDX), Git, SVN, CodeIgnater, Yii 2, JiRA, Redmine, Bitbucket, Composer
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



c начала 2017 года в Новосибирске.
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 26382
Пользователь №: 21350
На форуме: 7 лет, 2 месяца, 14 дней
Карма: 737




именно по этому я для себя решил давно - не использовать CMS для важных или мало-мальски значимых проектов
только если что-то быстро развернуть и забыть.


--------------------
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql (TSql, BI OLAP, MDX), Git, SVN, CodeIgnater, Yii 2, JiRA, Redmine, Bitbucket, Composer
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
inpost  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Помагите Здесь живу!!!
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 22919
Пользователь №: 20039
На форуме: 7 лет, 5 месяцев, 21 день
Карма: 607




не вижу проблем с моей колокольни, чем плохо работать с $_GET smile.gif


--------------------
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



c начала 2017 года в Новосибирске.
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 26382
Пользователь №: 21350
На форуме: 7 лет, 2 месяца, 14 дней
Карма: 737




юзер нынче пошёл..всё наровит поковырять Url


--------------------
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql (TSql, BI OLAP, MDX), Git, SVN, CodeIgnater, Yii 2, JiRA, Redmine, Bitbucket, Composer
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
inpost  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Помагите Здесь живу!!!
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 22919
Пользователь №: 20039
На форуме: 7 лет, 5 месяцев, 21 день
Карма: 607




lekafe
А зачем менять данные в $_GET ? Моя фраза касалась только:
$_GET = add_magic_quotes( $_GET );

Так как если система работает так, то нет ничего плохого в том, чтобы их обработать.
Проще в 1 из 100 проектов сделать отдельное хранение первоначальных данных, чем абсолютно во всех их бережно хранить в надежде: "авось пригодится".


--------------------
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (2) [1] 2  Ответ в темуСоздание новой темыСоздание опроса