ФорумПрограммированиеPHP для идиотов → Как вставить константу в строку?

Как вставить константу в строку?

  • AlexB

    Сообщения: 4290 Репутация: N Группа: в ухо

    Spritz 5 марта 2009 г. 8:09, спустя 3 минуты 50 секунд

    adw0rd, это действительно не работает. Фигурные скобки для массивов.

    smackthat, нафига тебе именно "без конкатенации"? В чем сакральный смысл?

  • Lirck

    Сообщения: 1658 Репутация: N Группа: Джедаи

    Spritz 5 марта 2009 г. 8:21, спустя 12 минут 11 секунд

    НИКАК, БРОСАЙ ПХП xD
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 5 марта 2009 г. 8:24, спустя 2 минуты 5 секунд

    AlexB, я никогда не юзал, просто предложил :)
    adw/0
  • smackthat

    Сообщения: 464 Репутация: N Группа: Адекваты

    Spritz 5 марта 2009 г. 9:38, спустя 1 час 14 минут 35 секунд

    вот в чем сакральный смысл: есть файл с константами

    <?
       // modes
       define("MODE_MAIN",0);
       define("MODE_NEWS",1);
       define("MODE_ADMIN",2);
       define("MODE_REGISTER",3);
       define("MODE_LOGIN",4);    
       define("MODE_CABINET",5);
       
       // submodes
       define("SUBMODE_DEFAULT",0);
       define("SUBMODE_REG_CHECK",1);
       define("SUBMODE_LOGIN_EXIT",1);
       define("SUBMODE_ADMIN_ADD",2);
       define("SUBMODE_ADMIN_EDIT",3);
       define("SUBMODE_ADMIN_UPDATE",4);
       define("SUBMODE_ADMIN_DELETE",5);
    ?>

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

    function addContent()
    {
       $htmlCode="";
       
       $mode=getValueFrom_GET('mode');
       
       switch($mode)
       {
           // главная страница
           case MODE_MAIN:
           add(welcome_func(),$htmlCode);
           break;
           
           case MODE_NEWS:
           add(read_news_func(),$htmlCode);
           break;

           case MODE_ADMIN:
           add(edit_news_func(),$htmlCode);        
           break;

           case MODE_REGISTER:
           add(registration_func(),$htmlCode);        
           break;

           case MODE_LOGIN:
           add(login_func(),$htmlCode);        
           break;
           
           case MODE_CABINET:
           add(cabinet_func(),$htmlCode);        
           break;        
     }    
       return $htmlCode;    
    }

    тут все хорошо, константы отлично вписались вместо цифр и не парят. Но вот, когда это нужно впихнуть в строку, при выводе
    html кода в ссылке например:

    // выводим все статьи в список
    add("<h2>$title</h2>
    <p>$text …<br>
    <a class=\"links_small\" href=\"index.php?mode=". MODE_ADMIN ."&#38;submode=" . SUBMODE_ADMIN_EDIT . "&#38;id=$id\">изменить</a> |
    <a class=\"links_small\" href=\"index.php?mode=" . MODE_ADMIN . "&#38;submode=" . SUBMODE_ADMIN_DELETE . "&#38;id=$id\">удалить</a></p><br>",$htmlCode);

    это же какой-то кашмар!!!

    блин, что с форумом, оно вместо \ пишет #38
  • Lirck

    Сообщения: 1658 Репутация: N Группа: Джедаи

    Spritz 5 марта 2009 г. 9:56, спустя 18 минут 7 секунд

    ну так и надо делать епт
    ну так сделай
    $var = CONST;
    echo "wdwddw $var dwdwdw";
  • smackthat

    Сообщения: 464 Репутация: N Группа: Адекваты

    Spritz 5 марта 2009 г. 10:08, спустя 11 минут 36 секунд

    та некрасиво так, что я в переменную константу записывать буду? какой тогда смысл в той константе
  • Lirck

    Сообщения: 1658 Репутация: N Группа: Джедаи

    Spritz 5 марта 2009 г. 10:09, спустя 1 минуту 37 секунд

    ну тогда никак емае
  • Lirck

    Сообщения: 1658 Репутация: N Группа: Джедаи

    Spritz 5 марта 2009 г. 10:10, спустя 58 секунд

    сделай константы через регистри и в строке делай так
    echo "{Registry::get('CONSTANT')}"
    но хз будет воркать или нет
  • smackthat

    Сообщения: 464 Репутация: N Группа: Адекваты

    Spritz 5 марта 2009 г. 10:15, спустя 5 минут 2 секунды

    не работает. Я тут думаю может в попу те константы и все строками делать? Не упадет ли производительность при сравнении в конструкциях switch?
  • Timur

    Сообщения: 1068 Репутация: N Группа: Джедаи

    Spritz 5 марта 2009 г. 10:26, спустя 10 минут 12 секунд

    извращения:

    <?php
    define('CONST', 'Йа - константа!');
    extract(get_defined_constants());
    echo "Ты константа? — <h1>$CONST</h1>";



    не работает. Я тут думаю может в попу те константы и все строками делать? Не упадет ли производительность при сравнении в конструкциях switch?

    эффективное программирование на PHP — оссобенно внимательно раздел "Вступление в эффективное программирование". После прочтения все подобные вопросы должны исчезнуть.

    В твоем случае — задавай свои параметры переменными и не мучайся.
  • vasa_c

    Сообщения: 3127 Репутация: N Группа: в ухо

    Spritz 5 марта 2009 г. 10:30, спустя 3 минуты 55 секунд

    Конкатентация константы со строкой это единственный не кошмар в этом кошмарном коде.
  • smackthat

    Сообщения: 464 Репутация: N Группа: Адекваты

    Spritz 5 марта 2009 г. 10:32, спустя 2 минуты 52 секунды


    Конкатентация константы со строкой это единственный не кошмар в этом кошмарном коде.

    А что там кошмарного? Поподробнее пожалуйста, я только учусь, и рад советам!
  • smackthat

    Сообщения: 464 Репутация: N Группа: Адекваты

    Spritz 5 марта 2009 г. 10:33, спустя 54 секунды

    Timur, спасибо, пошел читать
  • Timur

    Сообщения: 1068 Репутация: N Группа: Джедаи

    Spritz 5 марта 2009 г. 10:34, спустя 32 секунды

    блин, что с форумом, оно вместо \ пишет #38

    это фича
  • smackthat

    Сообщения: 464 Репутация: N Группа: Адекваты

    Spritz 5 марта 2009 г. 10:35, спустя 1 минуту 8 секунд


    блин, что с форумом, оно вместо \ пишет #38

    это фича

    А зачем она? Или подкалуешь?

Пожалуйста, авторизуйтесь, чтобы написать комментарий!