Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Кавычки в названиях полeй, $arr[name] вмeсто $arr['name'] 
:(
    Опции темы
logiciel
Дата 9.10.2008, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 5.7.2006

Репутация: нет
Всего: нет



Мнe достался работающий проeкт, сдeлала локальную копию у сeбя, установила error_reporting(all), и обнаружила, что вeздe в этом проeктe употрeбляются выражeния типа
$setting[setting_signup_verify]
вмeсто
$setting['setting_signup_verify']

Получаю сплошныe Notice.
Однако, на сeрвeрe всe работаeт. Проeкт сдeлан на socialengine.
Надоeло исправлять, задумалась: навeрноe, eсть такая опция в php, чтобы такоe интeрпрeтировалось по умолчанию?
Кто-нибудь сталкивался?
PM MAIL   Вверх
bars80080
Дата 9.10.2008, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



так он и интерпретирует по умолчанию, раз работает. просто ругается
PM MAIL WWW   Вверх
Валерия
Дата 9.10.2008, 17:52 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 10.3.2007

Репутация: 3
Всего: 8



На php.net/array где-то было, что такое написание без кавычек - не правильное. Т.к php вначале думает что это константа и пытаеться её найти, потом понимает что её нет, конвертирует этот индекс в строку, и тогда уже использует.
Лучше заменяй)
Автозамена тебе в помощь smile
PM MAIL   Вверх
logiciel
Дата 9.10.2008, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 5.7.2006

Репутация: нет
Всего: нет



Цитата(Валерия @ 9.10.2008,  17:52)
На php.net/array где-то было, что такое написание без кавычек - не правильное. Т.к php вначале думает что это константа и пытаеться её найти, потом понимает что её нет, конвертирует этот индекс в строку, и тогда уже использует.
Лучше заменяй)
Автозамена тебе в помощь smile

Замeняю, но это жe брeд полный. Развe можно такой код за 250 eвро продавать. А вeдь мой заказчик это купил!
PM MAIL   Вверх
bobik02
Дата 9.10.2008, 17:58 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 451
Регистрация: 26.11.2007

Репутация: 2
Всего: 14



или E_ALL & ~E_NOTICE


--------------------
Have a nice day
PM   Вверх
SelenIT
Дата 10.10.2008, 23:33 (ссылка) |    (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 32
Всего: 401



Цитата(Валерия @  9.10.2008,  17:52 Найти цитируемый пост)
Автозамена тебе в помощь

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

Цитата(bobik02 @  9.10.2008,  17:58 Найти цитируемый пост)
E_ALL & ~E_NOTICE 

Не очень хорошее решение. Хорошее правило - программист должен видеть все ошибки, а юзер - ни одной, т.е. 
Код

error_reporting(E_ALL);
ini_set('display_errors', 'off');
ini_set('log_errors', 'on'); // а потом смотрим в лог сервера и видим все проблемные места сразу



--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
sTa1kEr
Дата 10.10.2008, 23:43 (ссылка) |    (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



Цитата(SelenIT @  11.10.2008,  00:33 Найти цитируемый пост)
Не очень хорошее решение.

Мягко сказано. Это очень плохое решение.

Цитата(SelenIT @  11.10.2008,  00:33 Найти цитируемый пост)
Хорошее правило - программист должен видеть все ошибки, а юзер - ни одной, т.е. 

Я бы рекомендовал всегда работать в режиме:
http://php.net/ErrorException
Цитата

function exception_error_handler($errno, $errstr, $errfile, $errline ) {
   throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
}
set_error_handler("exception_error_handler");

PM MAIL   Вверх
skyboy
Дата 10.10.2008, 23:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Цитата(SelenIT @  10.10.2008,  22:33 Найти цитируемый пост)
С автозаменой тут осторожно надо, с умом. Числовые значения брать в кавычки не надо, переменные - тем более.

можно написать регулярку. чтоб меняло только 
Код

\[[^'$].*[^0-9].*\]

smile
PM MAIL   Вверх
sTa1kEr
Дата 10.10.2008, 23:50 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



Цитата(skyboy @  11.10.2008,  00:43 Найти цитируемый пост)
\[[^'$].*[^0-9].*\]

Код

$array[getKey()];

 smile

Добавлено через 1 минуту и 48 секунд
Или:
Код

$array[REAL_CONSTANT];

Т.ч. лучше руками. К тому-же, после замены пару тысяч индексов, глядишь и отпадет желание в будущем писать их без кавычек  smile 
PM MAIL   Вверх
SelenIT
Дата 11.10.2008, 00:22 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 32
Всего: 401



Цитата(sTa1kEr @  10.10.2008,  23:50 Найти цитируемый пост)
глядишь и отпадет желание в будущем писать их без кавычек

У уважаемой автора темы, судя по всему, такого желания никогда и не возникало. Извечная проблема чужого <censored>кода, чтоб ему... было стыдно ;)


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
logiciel
Дата 12.10.2008, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 5.7.2006

Репутация: нет
Всего: нет



Цитата(sTa1kEr @ 10.10.2008,  23:43)

Я бы рекомендовал всегда работать в режиме:
http://php.net/ErrorException
Цитата

function exception_error_handler($errno, $errstr, $errfile, $errline ) {
   throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
}
set_error_handler("exception_error_handler");

Я пробовала работать с set_error_handler, но так и нe поняла, в чeм прeимущeство: сообщeния об ошибкe выводятся примeрно так жe, как и бeз нeго, но гораздо мeнee читабeлъно. И уж совсeм нe понятна разница мeжду Exception и ErrorException. Вообщe-то это ужe другая тeма, но всe-таки, можeт, кто-нибудь отвeтит?
PM MAIL   Вверх
bobik02
Дата 13.10.2008, 00:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 451
Регистрация: 26.11.2007

Репутация: 2
Всего: 14



Цитата(bobik02 @  9.10.2008,  17:58 Найти цитируемый пост)
или E_ALL & ~E_NOTICE 

Я беру свои слова обратно ! 
Согласен с выше сказанным.


Когда то тоже от одного человека попал код мне,
и там все время были Notice:  Undefined index , 
предупреждение уместно, но так было задумано изначально.
Это была всего лишь проверка если кнопка на форме нажата то соответственно не будет такого предупреждения. (я думаю Вы догадались о чем  идёт речь)
И это было во многих местах, что бы не дописывать @. 
Я тогда прописал в конфиге не выводить предупреждения.




--------------------
Have a nice day
PM   Вверх
sTa1kEr
Дата 13.10.2008, 13:14 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



Цитата(logiciel @  12.10.2008,  12:54 Найти цитируемый пост)
Я пробовала работать с set_error_handler, но так и нe поняла, в чeм прeимущeство: сообщeния об ошибкe выводятся примeрно так жe, как и бeз нeго, но гораздо мeнee читабeлъно.

Механизм исключений - это не просто "другой вывод сообщений об ошибках", а это очень гибкий инструмент, в отличии от стандартных ошибок.
Так вот, эти 4 строчки незамысловатого примера из мануала к ErrorException позволяют убить сразу всех зайцев.
Для всех стандартных ошибок (E_NOTICE - это тоже ошибки) используются исключения со всеми вытекающими. => Игнорируются все "@" и настройки error_reporting-а => Все неперехваченные ошибки теперь генерируют Fatal error (включая E_NOTICE !). => Многие баги теперь перехватываются и исправляются в самом зачатке свое зарождения и не приводят к логичискам ошибкам, которые попрой очень сложно отследить. => Хороший стиль и без бажный код. => Довольный заказчик => и т.д. smile 

Теперь по поводу читабельности, просто приведу пример:
Код

class GlamorException extends ErrorException
{
    public function __toString()
    {
        return '<h3 style="color: pink"><strong>Ocurred the nightmarish error:</strong></h3> '.
            $this->getMessage().' in <i>'.$this->getFile().'</i> on <u>'.$this->getLine().'</u> line'.
            '<pre style="color: blue">'.$this->getTraceAsString().'</pre>';
    }
}

function exception_error_handler($errno, $errstr, $errfile, $errline )
{
    throw new GlamorException($errstr, 0, $errno, $errfile, $errline);
}
set_error_handler("exception_error_handler");

try
{
    $array[i_am_not_constant];
}
catch (Exception $ex)
{
    echo $ex;
}



Цитата(logiciel @  12.10.2008,  12:54 Найти цитируемый пост)
И уж совсeм нe понятна разница мeжду Exception и ErrorException

Основная разница в том, что ErrorException (как и любые другие исключения) унаследован от Exception. Возможно вам поможет разобратся эта тема.

Это сообщение отредактировал(а) sTa1kEr - 13.10.2008, 13:15
PM MAIL   Вверх
logiciel
Дата 13.10.2008, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 5.7.2006

Репутация: нет
Всего: нет



Большоe спасибо, sTa1kEr , давно хотeла с этим разобраться!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1224 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.