Помогите исправить собственное быдлокодерство

gray

Новичок
Так лучше не писать
PHP:
return $truefalse[$id]
если я передам туда к примеру число 10000, а массив
PHP:
$truefalse
будет размером 10 элементов мы получим Notice: Undefined offset.Использовать isset в данном случае не лучший вариант,если передам в вашу функцию isAdmin,в место числа null, то меня пустят внутрь блока if.
Попробовал подавать на вход моей функции числа 10К и 100К и т.п. Все нормально работает. Нотайс не было замечено.
Попробовал на вход подать null. Да, в if пускает, но результат то всеравно получается false, т.к. в бд не может быть id с таким значением.

С empty поработаю, спасибо.
 

Фанат

oncle terrible
Команда форума
кстати да. обсуждение своих фреймворков переносите в отдельный топик.
 

craz

Нестандартное звание
Ну почему же, это же примеры "хорошего" кода)
 

AmdY

Пью пиво
Команда форума
Нормально делает я считаю, я вот никак не наберусь смелости) прилепил какой нить Craz_ClassName - и все пипец теперь это ТВОЙ код)
Очень зря этого не делаешь. Как только добавишь, появится стимул писать лучший реиспользуемый код.
 

weregod

unserializer
Доброе утро. 5.3.
уже писал про префиксы и пространства имён: при разработке продукта, который пишется со времён PHP 3 и гоняется на куче платформ:
1. сужать кол-во площадок через требование ">= PHP 5.3" глупо;
2. менять API вообще некошерно.

рекомендую префиксовать утверждения подобного типа чем-то вроде "новый проект" :D:D
 

WMix

герр M:)ller
Партнер клуба
боюсь пока не соответствовать, это как автограф художника.
а код всегда хочется доработать... нет времени вылизывать, или когда все вылизал вышла новая версия, или появился експириенс и перешел на новый левел... сколько не пишешь, тут чтот добавить, ах тут чтот проиппал, и там былоб лучше еслиб не скаляр а масив... бесконечно...

посморишь на прогу которой 2 года волосы дыбом...
 

gray

Новичок
У меня вопрос к по продолжению темыФанат.
Собственно вопрос первого поста уже раскрыт, но заголовок "помогите исправить собственное быдлокодерство" актуален.
У меня имеются вопросы, которые не относятся к первоначальному коду.

Например. Как лучше че можно записать такую конструкцию
PHP:
$meta = (isset($meta))?$meta:"";
php 5.2.1, потому конструкция
PHP:
$meta = (isset($meta))?:"";
не работает.

Или такие вопросы задавать уже в новых топиках или на http://stackoverflow.com/ и им подобным?
 

Фанат

oncle terrible
Команда форума
Как лучше че можно записать такую конструкцию
Я не люблю тернарный оператор, и по возможности стараюсь избегать его. Поэтому пишу так
PHP:
if (!isset($meta)) {
    $meta = "";
}
Это немного длиннее писать, но (по моему мнению) на порядок легче читать.

Я, правда, не понял, к какому куску кода это относится.

А вот это
Уже нашел решение.
$meta=($meta?$meta:'');
и вовсе бессмысленная строчка. Наличие её в коде не несет ни малейшего смысла
 

gray

Новичок
Я, правда, не понял, к какому куску кода это относится.
В том то и дело ни к какому из вышеприведенных. Вопрос состоял в том, задавать ли подобные вопросы в этой же теме "помогите исправить собственное быдлокодерство" или плодить новые? И привел пример того, какого рода вопросы у меня возникают.
Т.е. вот сейчас у меня целая серия вопросы про notice. Эти оповещения противоречат тому что указано в доках и разных сниппетах на php.net. Как в этом случае поступать, забивать болт на нотайсы или нет? Собственно отсюда и этот кусок кода:
PHP:
$meta=($meta?$meta:'');
. И возмущением php что не на всех страницах программы я создал этот самый $meta для вывода.
Впрочем эту проблему я уже решил.
Но есть и другие.

Например есть конструкция:
PHP:
switch ($_GET["f"])
{
  case "a":/*...*/break;
  case "b":/*...*/break;
  case "c":/*...*/break;
  default:/*действие по-умолчанию*/
}
На неё php ругается так:
PHP:
Notice: Undefined index: f
Ругается на несуществующую переменную $_GET['f'].
Как в этом случае правильно оформить конструкцию, чтобы ругани не было или просто плюнуть?
Вариант сделать так:
PHP:
if(isset($_GET["f"])){switch ($_GET["f"])
{
  case "a":/*...*/break;
  case "b":/*...*/break;
  case "c":/*...*/break;
  default:/*действие по-умолчанию*/
}
}
else{/*действие по-умолчанию*/}
 

Фанат

oncle terrible
Команда форума
Собственно отсюда и этот кусок кода:
PHP:
$meta=($meta?$meta:'');
Не знаю, где ты взял этот кусок кода и как егого творчески переработал, но смысла он как не имел, так и не имеет.
Либо у тебя работает не он, либо эта переменная всегда определена, либо отключены нотисы, либо они таки сыпятся.
 

WMix

герр M:)ller
Партнер клуба
PHP:
/**
 * Get an _GET parameter
 *
 * @param string $key
 * @param mixed $default Default value to use if key not found
 * @return mixed
 */
function getParam($key, $default = null){
    $key = (string) $key;
    if (isset($_GET[$key])) {
        return $_GET[$key];
    }
    return $default;
}

switch (getParam('f','default')){
  case "a":/*...*/break;
  case "b":/*...*/break;
  case "c":/*...*/break;
  default:/*действие по-умолчанию*/
}
 
  • Like
Реакции: gray

gray

Новичок
Не знаю, где ты взял этот кусок кода и как егого творчески переработал, но смысла он как не имел, так и не имеет.
Либо у тебя работает не он, либо эта переменная всегда определена, либо отключены нотисы, либо они таки сыпятся.
Всё верно, сыпятся notice. Написал глупость.

PHP:
switch (getParam('f','default'))
Соображалку пока сложно перестроить на другую плоскость. Спасибо и за метод и за код.
 
Сверху