Автор Тема: define  (Прочитано 3469 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Enemy

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 204
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.lutsiv.com
define
« : 13 Августа 2003, 15:29:40 »
Чтобы изменить значение константы на странице - мне нужно перегружать страницу дважды...

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

потом я прочитал в хелпе -

Constants may not be redefined or undefined once they have been set;

не знаю как решить эту проблему. что посоветуете? удалить константу также не знаю как (вроди и невозможно).
Life is Good

Оффлайн tserbis

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 496
  • +0/-0
  • 0
    • Просмотр профиля
define
« Ответ #1 : 13 Августа 2003, 15:47:03 »
Может, КОНСТАНТЫ тебе не подходят?

Оффлайн Enemy

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 204
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.lutsiv.com
define
« Ответ #2 : 13 Августа 2003, 16:00:34 »
подходят. иначе уже не могу. все файлы уже с константами. перевод сайта на два языка. теперь нужно сделать так чтобы с перегрузкой страницы + выбран другой язык - изменялись константы и язык сайта.

там стоит простой switch -


switch ($_SESSION["lang"]){

	
case 
"ua" : { $file "lang-ukrainian.php"; break;};
	
case 
"ru" : { $file "lang-russian.php"; break;};
	
default : { 
$file "lang-ukrainian.php"; break;};

}
//endswitch

include_once("language/$file");


файл загружается, а константы не перегружаются. только после еще одного рефреша.
Life is Good

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
define
« Ответ #3 : 13 Августа 2003, 16:08:33 »
Ну вот что с такими делать?
Говорят ему - константы не подходят.
причем он САМ убедился, что таки не подходят.

И все равно будет талдычить.

Ну тогда ОПРЕДЕЛЯЙ константы ПОСЛЕ того, как выбрал язык.
А не ДО.

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

Оффлайн Enemy

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 204
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.lutsiv.com
define
« Ответ #4 : 13 Августа 2003, 16:21:40 »
Стрелятся мне не зачем. у меня с нервами все в порядке, не то что у некоторых. А спрашиваю я потому что в НЮКЕ это реализовано. И работает. Значит МОЖНО так сделать.
Life is Good

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
define
« Ответ #5 : 13 Августа 2003, 16:46:42 »
Enemy
Цитировать
switch ($_SESSION["lang"]){

    case "ua" : { $file = "lang-ukrainian.php"; break;};
    case "ru" : { $file = "lang-russian.php"; break;};
    default : { $file = "lang-ukrainian.php"; break;};

}//endswitch
у тебя до этого switch-а уже были константы определены ?
Цитировать
файл загружается, а константы не перегружаются. только после еще одного рефреша.
ты уверен что загружается именно нужный  файл ?

Предположение:

if (isset($_GET[\'lang\']) && in_array($_GET[\'lang\'], array(\'ru\',\'ua\')) {
   $_SESSION[\'lang\'] = $_GET[\'lang\'];
}
// далее твой switch
....
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Enemy

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 204
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.lutsiv.com
define
« Ответ #6 : 13 Августа 2003, 16:58:23 »
1. Спасибо хорошему человеку за ответ - Макс .

вот мой текст кода -


<?php
session_start
();
if (
$_GET["lang"]) $_SESSION["lang"] = $_GET["lang"];
if (!
$_SESSION["lang"]) $_SESSION["lang"] = "ua";


switch (
$_SESSION["lang"]){ 

    case 
"ua" : { $file "lang-ukrainian.php"; break;}; 
    case 
"ru" : { $file "lang-russian.php"; break;}; 
    default : { 
$file "lang-ukrainian.php"; break;}; 

}
//endswitch 

include_once("language/$file");



Это почти то же что ты и говорил.
2.
Цитировать
ты уверен что загружается именно нужный файл ?
- к сожалению уверен... проверял...
Life is Good

Оффлайн Enemy

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 204
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.lutsiv.com
define
« Ответ #7 : 16 Августа 2003, 17:18:23 »
что никто и никогда не использовал константы? я думаю что способ решения этой проблемы - был бы интересен всем.
Life is Good

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
define
« Ответ #8 : 16 Августа 2003, 21:05:21 »
Все использовали.
Но только именно как константы, а не как переменные.
во-первых, все используют константы именно как КОНСТАНТЫ.
число ПИ - константа.
она всегда равно одному и тому же числу.
а не так, что сегодня она равна 3, а завтра - 4.

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

Но раз уж ты влез с константами так, что переделать не можешь, то повторяю еще раз:
поскольку РНР яызк скриптовый, и выполняется заново каждый раз при просмотре страницы, нет никаких проблем определять константы ПОСЛЕ того, как ты определишься, наконец, что им присвоить.
Не ДО, чтобы потом переопределять, а ПОСЛЕ того, как ты из сессии прочтешь язык.

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

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28