Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > настройки php.ini


Автор: bars80080 25.1.2009, 16:02
есть три директивы в .htaccess, которые также настраиваются в php.ini

php_flag allow_call_time_pass_reference 1
php_value mbstring.func_overload 2
php_value mbstring.internal_encoding UTF-8

могли бы вы их прокомментировать?

первая для пхп5 по-дефолту закрыта, и как я понял это означает запрет передачи ссылки на параметр в функцию.
значит ли это что function qw(&$t) { } может не работать?

две других, я не совсем понял на что они влияют

Автор: godvinn 25.1.2009, 16:19
php_value mbstring.func_overload 2
php_value mbstring.internal_encoding UTF-8  
- насколько мне извесно эти две строчки влияют на коректную работу кодировок в utf-8


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

и не до конца понимаю зачем их включать если можно кодировки выставить charset  

Автор: enof 25.1.2009, 16:54
1,ага,
передачу параметра по ссылке при вызове функции вскоре отключат.
Лучше сразу при объявлении функции указывать,чтобы потом не переделывать.

2. mb_string будет перегружать стандартные функции. т.е. вместо strlen(),при работе с юникодом не надо будет писать .mb_strlen().
Какие значения указывать не помню.Помню только что 7 перегружает строковые,ereg и mail функции.

3. Внутренняя кодировка вроде,точно не помню.

Добавлено через 2 минуты и 29 секунд
Цитата(godvinn @  25.1.2009,  16:19 Найти цитируемый пост)
и не до конца понимаю зачем их включать если можно кодировки выставить charset   

Чтобы потом
Цитата(godvinn @  25.1.2009,  16:19 Найти цитируемый пост)
не было таких серьезных багов с кодировками

Проще сразу все настроить по-человечески,чем потом голову ломать,почему краказябры на экран лезут и функции криво работают smile 

Автор: bars80080 25.1.2009, 18:46
понятно

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


Цитата(enof @  25.1.2009,  15:54 Найти цитируемый пост)
mb_string будет перегружать стандартные функции. т.е. вместо strlen(),при работе с юникодом не надо будет писать .mb_strlen().

а будут ли тогда функции корректно работать с обычными кодировками?

Автор: enof 25.1.2009, 19:14
Цитата(bars80080 @  25.1.2009,  18:46 Найти цитируемый пост)
а с чем связано отключение ссылки?

Если функция изначально объявлена с передачей параметра по ссылке,то кодер должен знать,что с его переменной будет после функции.
Если идет передача параметра по значению,то не важно,что будет с переданным значением происходить в функциию.
Естественно,функция может меняться,один результат может быть получен разными способами,и не известно,что может стать с переменной,
так как передача по ссылке не подразумевается,то программист на свой страх и риск передает параметр по ссылке smile 
Хотел в двух словах сказать,не получилось(
Ну короче сомнительное решение,на мой взгляд


Цитата(bars80080 @  25.1.2009,  18:46 Найти цитируемый пост)

а будут ли тогда функции корректно работать с обычными кодировками?

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

p.s.
в 6 версии PHP обещают нормальную поддержку юникода smile 

Автор: georgiy11 25.1.2009, 23:58
то есть если я понял надо явно указывать ссылку в аргументах  как в C++
 

Автор: enof 26.1.2009, 13:53
Так нельзя:
Код

<?php
function my($a)
{
    $a=10;
}
$i=99;
my(&$i);
?>

Надо так:
Код

<?php
function my(&$a)
{
    $a=10;
}
$i=99;
my($i);
echo $i;
?>


Цитата(georgiy11 @  25.1.2009,  23:58 Найти цитируемый пост)
то есть если я понял надо явно указывать ссылку в аргументах  как в C++

Да,но в С++ можно и не указывать в аргументах ссылку,придется с указателями работать,а так компилятор все за тебя сделает.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)