Проблема с GLOBAL

chezzzy

Новичок
Проблема с GLOBAL

Проблема заключается в том, что в методе класса через global напрочь отказывается видеться переменная.

код примерно такой:

PHP:
<?php

require_once('conf/licences.conf.inc.php');

die (print_r ($licences_vars));  // здесь она выведет массив

class licences extends mainpage
{

	function licences ($lang='', $cat=0, $mainid=0)
	{
		$this->mainpage($lang, $cat, $mainid);
	}

	function setpage($id = 0, $offset = 0, $sort = '', $sortdesc = '')
	{
		global $lang, $licences_vars;
		
		parent::setpage($id, $offset, $sort, $desc);
		
		die (print_r ($licences_vars));  // а здесь получаем пустое значение
	}
}

?>
в чем может быть дело? кто-нибудь сталкивался с подобным?
 

Фанат

oncle terrible
Команда форума
если в классах используется global - значит неправиильно спроектирован класс
 

OZ

Новичок
А ты делал это setpage? Что ТОЧНО выводтится? (сюда напиши). Какой алгоритм у метода setpage класса mainpage? Может он очищает эту переменную.
 

Фанат

oncle terrible
Команда форума
OZ
никто ничего не очищает.
проблема детская, с непониманием того, что такое область видимости в пхп.

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

chezzzy

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

Фанат

oncle terrible
Команда форума
о господи.
очередной специалист-теоретик.
каким боком здесь require_once, ты можешь объяснить?
с чего ты взял, что пхп что-то "запоминает"?
 

a_[w]

Новичок
Автор оригинала: Фанат
если в классах используется global - значит неправиильно спроектирован класс
Да, как по мне, это единственно правильный ответ.
Как быстрое решение - попробуй использовать static класс, как замену GLOBAL.
class Global{
....
}

З.Ы.: static - предпологается использование этого класса без нужды создания его экземпляров.
З.З.Ы.:
PHP:
class licences extends mainpage { 
    function licences ($lang='', $cat=0, $mainid=0) {...} // конструктор из РНР4
    function setpage($id = 0, $offset = 0, $sort = '', $sortdesc = '') { 
        parent::setpage($id, $offset, $sort, $desc); // parent:: из РНР5
    }
}
попробуй для начала избавится от таких неоднозначностей.
 

chezzzy

Новичок
a_[w]
спасибо за ответ ) а не за необоснованные нарекания
 
Сверху