[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как запретить переопределение переменной???
Shkiper
Всем Здрасти!!! Смотрите есть переменная со значением, а как мне сделать если например потом далее в коде будет этой же переменной даваться другое значение чтоб значение оставалось такое как в первом разе?????



Спустя 2 минуты, 52 секунды (25.03.2012 - 14:05) johniek_comp написал(а):
используй константы define()

Спустя 31 минута, 56 секунд (25.03.2012 - 14:37) Игорь_Vasinsky написал(а):
Ну смотри тут как вариант написать функции для информирования юзера
(я так понимаю что речь идет о твоей цмс, т.е. предостеречь пользователя при расширении функцианала цмс - не запороть весь миханизм случаным переназначением тваоей переменной)

    //Проверяем есть ли переменная $mcpagesall 
$allDefined = get_defined_vars();

if(array_key_exists('mcpagesall', $allDefined))
echo 'УЖЕ ОПРЕДЕЛЕНА!!!!';
else
echo 'ЕЩЁ НЕ ОПРЕДЕЛЕНА!!!';


т.е. можно при обломе возращать алерт JS, при удаче - саму переменную.

так же как вариант - можно сделать доп. раздел в админке с выводом всех объявленных переменных и констант.

Спустя 5 минут, 47 секунд (25.03.2012 - 14:43) Игорь_Vasinsky написал(а):
Цитата
используй константы define()

400 констант ph34r.gif laugh.gif

Спустя 37 минут, 51 секунда (25.03.2012 - 15:21) inpost написал(а):
Deert
Внимательным быть к своему же коду...

Спустя 11 минут (25.03.2012 - 15:32) Shkiper написал(а):
Цитата (Игорь_Vasinsky @ 25.03.2012 - 11:37)
Ну смотри тут как вариант написать функции для информирования юзера
(я так понимаю что речь идет о твоей цмс, т.е. предостеречь пользователя при расширении функцианала цмс - не запороть весь миханизм случаным переназначением тваоей переменной)

    //Проверяем есть ли переменная $mcpagesall 
$allDefined = get_defined_vars();

if(array_key_exists('mcpagesall', $allDefined))
echo 'УЖЕ ОПРЕДЕЛЕНА!!!!';
else
echo 'ЕЩЁ НЕ ОПРЕДЕЛЕНА!!!';


т.е. можно при обломе возращать алерт JS, при удаче - саму переменную.

так же как вариант - можно сделать доп. раздел в админке с выводом всех объявленных переменных и констант.

Можешь мне коечто посоветовать???? Как мне лучше реализовать вывод страниц на подобии такое УРЛа cms/?do=registration??? Я сделал так если есть переменная ГЕТ do то загружаем файл со страницами(page.class.php) и задаем значение переменной($page которая выводиться в шаблоне) и потом она выводиться, а если нет то, задаем с помощью буферизации, вывод всех новостей на сайте и постраничную навигацию. Надежна ли такая конструкция???? и можно ли увидеть твое решение этой проблемы???

Спустя 29 минут, 38 секунд (25.03.2012 - 16:01) johniek_comp написал(а):
Deert
чем не вариант

Спустя 57 минут, 28 секунд (25.03.2012 - 16:59) twin написал(а):
Цитата (Игорь_Vasinsky @ 25.03.2012 - 11:43)
Цитата
используй константы define()

400 констант ph34r.gif laugh.gif

Чем отличается от 400 переменных, инициализированных извратным способом, не дающим их переопределять?

Спустя 14 минут, 14 секунд (25.03.2012 - 17:13) Shkiper написал(а):
johniek_comp я както не все там понял.

Спустя 1 минута, 8 секунд (25.03.2012 - 17:14) Shkiper написал(а):
johniek_comp sorry опечатался посмотрю!!!

Спустя 20 минут, 43 секунды (25.03.2012 - 17:35) Игорь_Vasinsky написал(а):
inpost
Речь как я понял о возможности сторонних разработчиков расширять функционал самописной CMS

twin
Цитата
Чем отличается от 400 переменных, инициализированных извратным способом, не дающим их переопределять?


о каком извратном способе ты говоришь?


Джонек - ты опять предлагаешь классы....

Спустя 10 минут, 8 секунд (25.03.2012 - 17:45) Shkiper написал(а):
Игорь_Vasinsky а чем классы плохи???? Предложи свой вариант.

Спустя 3 минуты, 49 секунд (25.03.2012 - 17:49) Shkiper написал(а):
johniek_comp мне это чем-то PHP фреймфорк напоминает!!!

Спустя 45 минут, 33 секунды (25.03.2012 - 18:34) caballero написал(а):
Цитата
а чем классы плохи???? Предложи свой вариант.

начали за здравие а заканчиваем за упокой
какое отношение имеют классы к изначальному вопросу щ неизменяемых переменных?

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

Спустя 59 минут, 43 секунды (25.03.2012 - 19:34) johniek_comp написал(а):
Deert
так это он и будет, если сделать охуе***ю штуку(ядро) по MVC etc...то должно не плохо получится, главное что ничего не путается и все разложено по полочкам

Спустя 7 минут, 12 секунд (25.03.2012 - 19:41) twin написал(а):
Игорь_Vasinsky
Цитата
о каком извратном способе ты говоришь?

О таком:

Цитата
  //Проверяем есть ли переменная $mcpagesall 
    $allDefined = get_defined_vars();
   
    if(array_key_exists('mcpagesall', $allDefined))
      echo 'УЖЕ ОПРЕДЕЛЕНА!!!!';
    else
      echo 'ЕЩЁ НЕ ОПРЕДЕЛЕНА!!!'; 



т.е. можно при обломе возращать алерт JS, при удаче - саму переменную.

Для чего нужно запрещать переопределение переменной, если для этого есть константы? И почему это лучше?

Спустя 6 минут, 18 секунд (25.03.2012 - 19:48) inpost написал(а):
Игорь_Vasinsky
Ну этого не говорится в условии.
Если уж так, то я на прошлой неделе писал в соседней теме.
Есть префиксы, которые дадут понять, что данные переменные являются основой движка, которые трогать нельзя. Так же есть мануалы, в которых пишут о таких переменных, и в заключение - указка и своих подчиненных бить по рукам, которые отказываются хотя бы основы движка почитать.

Спустя 29 минут, 42 секунды (25.03.2012 - 20:17) Игорь_Vasinsky написал(а):
Цитата
Для чего нужно запрещать переопределение переменной,

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

Цитата
если для этого есть константы? И почему это лучше?


Ну ИМХО - константы же в глобальной зоне видимости, переменныые в локальной, предположу что использование последних меньше ресурсоемкое занятие, опять же - предположу.

да и потом вопрос о переменных.

И инпост - ответил - использовать (или рекомендовать использовать) - префиксы.

Спустя 3 минуты, 35 секунд (25.03.2012 - 20:21) Shkiper написал(а):
Скажите вот такой вариант хорош:



if(iiset($_GET['do']))
{

if(empty($_GET['do']))
{
exit(header("Location: 404.html"));
}else{

include './system/classes/page.class.php';


}

}
else{

вывод всех новостей

}


page.class.php


switch($_GET['do'])
case "registration":
$page = file_get_contents('template/registration.tpl');


P.S: Я понимаю что мой вариант не хорош, и не проффесионален, но что смог. Оцените мое решение проблемы и(кому не сложно) представте мне свой код(охото что б он был проффесионален(ну это на ваше усмотрение))

Спустя 11 минут, 37 секунд (25.03.2012 - 20:32) Игорь_Vasinsky написал(а):
а просто так

if($_GET['do'])


не хочешь?

и вообще - как это к теме относиться?

Спустя 9 минут, 4 секунды (25.03.2012 - 20:42) Shkiper написал(а):
Да просто мне это надобыло что реализовать страници, а потом понял, тот варинт который я хочу вообще "не катит" на сайт и решил у вас спросить, зачем новую тему создавать(или стоит????)

Спустя 17 минут, 7 секунд (25.03.2012 - 20:59) twin написал(а):
Цитата (Игорь_Vasinsky @ 25.03.2012 - 17:17)
Ну ИМХО - константы же в глобальной зоне видимости, переменныые в локальной, предположу что использование последних меньше ресурсоемкое занятие, опять же - предположу.

да и потом вопрос о переменных.

Константы потому и в глобальной области, что не страшно их переопределить. Нет смысла их прятать. Насчет ресурсоемкости - это не так. Да и функция, которая должна каждый раз проверять переменную разве не ест ресурс?

Я просто это к тому, что дали же нормальный совет - использовать тот инструмент, который именно для этого и предназначен. Константы. А переменные на то и переменные, что их значение можно переменить. smile.gif

Спустя 3 минуты, 36 секунд (25.03.2012 - 21:02) Игорь_Vasinsky написал(а):
яж говорил - про то - если человек будет писать новый модуль для самописки - ему что - везде константы юзать. (это о префиксах)

про ресурсоёмкость - предполагал - знать буду.

Спустя 10 часов, 49 минут, 5 секунд (26.03.2012 - 07:51) Shkiper написал(а):
Блин чё никто не хочет мне помочь!??? biggrin.gif

Спустя 32 минуты, 35 секунд (26.03.2012 - 08:24) Игорь_Vasinsky написал(а):
а чем?

Спустя 13 минут, 46 секунд (26.03.2012 - 08:38) Shkiper написал(а):
Или мне кажеться, или я это 200 раз повторил:
 Скажите вот такой вариант хорош:



if(iiset($_GET['do']))
{

if(empty($_GET['do']))
{
exit(header("Location: 404.html"));
}else{

include './system/classes/page.class.php';


}

}
else{

вывод всех новостей

}


page.class.php


switch($_GET['do'])
case "registration":
$page = file_get_contents('template/registration.tpl');


P.S: Я понимаю что мой вариант не хорош, и не проффесионален, но что смог. Оцените мое решение проблемы и(кому не сложно) представте мне свой код(охото что б он был проффесионален(ну это на ваше усмотрение))

Спустя 5 минут, 44 секунды (26.03.2012 - 08:43) twin написал(а):
Вариант не просто плох, а ни в какие рамки. Даже судя по тому, что ты его сам ни разу не запускал.

Спустя 29 минут, 55 секунд (26.03.2012 - 09:13) Shkiper написал(а):
twin а можно твой пример???

Спустя 8 минут, 39 секунд (26.03.2012 - 09:22) twin написал(а):

Спустя 1 час, 11 минут, 3 секунды (26.03.2012 - 10:33) Игорь_Vasinsky написал(а):
ну во первых ты нарушаешь договорённость программистов классы хранить в одноимённых файлах с постфиксом "class"

Цитата
include './system/classes/page.class.php';


ты хранишь там чёрти чё.

Потом смотри что у тя происходит

//Во-первых isset(), если есть $_GET['do']
if(iiset($_GET['do']))
{
//Если пуста $_GET['do']
if(empty($_GET['do']))
{
exit(header("Location: 404.html"));
}
//Если не пуста $_GET['do'], хотя я могу и пробел отправить
else
{
include './system/classes/page.class.php';
}

}

//Если нету в урл $_GET['do'] - выведем все новости
else
{
//вывод всех новостей
}



Вообщем - анти алгоритм.
Ты совсем меня с толку сбил и я не могу понять - как у тя вывод всех новостей зависит от $_GET['do'], ты либо используешь не правильный алгоритм, либо не правильно его описываешь.

Спустя 3 часа, 37 минут, 9 секунд (26.03.2012 - 14:10) Shkiper написал(а):
Игорь_Vasinsky вывод новостей у меня не по $_GET[do] делается(смотори файл postnews.php)
Помоги мне с алгоримом построения сайта, чтобы "все было по полочкам разложено"(кто-то писал не помню). Хотяб сылкой на сайт где это можно найти (кроме irbis-team конечно)

Спустя 3 минуты, 36 секунд (26.03.2012 - 14:14) Игорь_Vasinsky написал(а):
так ты недавно архив с CMS выкладывал ohmy.gif

какой сайт, алгоритм дело тонкое.

Спустя 1 минута, 27 секунд (26.03.2012 - 14:15) Shkiper написал(а):
Ну хотяб натолки меня на путь истиный biggrin.gif

Спустя 1 час, 45 минут, 10 секунд (26.03.2012 - 16:00) twin написал(а):
Цитата (Игорь_Vasinsky @ 26.03.2012 - 07:33)
ну во первых ты нарушаешь договорённость программистов классы хранить в одноимённых файлах с постфиксом "class"

Нет такой договоренности. Кроме того, точка в имени файла достаточно хреновая практика. Если тебе нравится и нестрашны проблемы - твое право. Но от лица "договорившихся программистов" ты это зря smile.gif

Спустя 24 минуты, 52 секунды (26.03.2012 - 16:25) Shkiper написал(а):
Короче никто мне непоможет. Жаль........

Спустя 2 часа, 26 минут, 19 секунд (26.03.2012 - 18:52) I++ написал(а):
Если это ядро будет тормозить жутко, внедряя стиль ООП ко всему... нужно ли оно?

<?php

class
varibles
{
private $vars = array();

public function get_var($id)
{
if(isset($this->vars[$id]))
{
return $this->vars[$id];
}
}


public function set_var($id, $val)
{
$this->vars[$id] = $val;
if($this->vars[$id] === $val)
return true;
else
return
false;
}
}


class const_varibles
{
private $vars = array();

public function get_var($id)
{
if(isset($this->vars[$id]))
{
return $this->vars[$id];
}
}


public function set_var($id, $val)
{
if(!isset($this->vars[$id]))
{
$this->vars[$id] = $val;
if($this->vars[$id] === $val)
return true;
else
return
false;
}
else
return
false;
}
}


?>


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

Спустя 1 час, 14 минут, 36 секунд (26.03.2012 - 20:06) Игорь_Vasinsky написал(а):
Цитата
Нет такой договоренности.

да, ошибился. huh.gif

Спустя 6 минут, 44 секунды (26.03.2012 - 20:13) Shkiper написал(а):
I++ попробую, может что получится...
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.