За последние 24 часа нас посетили 62979 программистов и 1743 робота. Сейчас ищут 896 программистов ...

Правила программирования.

Тема в разделе "Прочие вопросы по PHP", создана пользователем mpak, 30 июл 2010.

Статус темы:
Закрыта.
  1. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    PHP:
    1. <?php // 5.2.4
    2. function _count($arr,$rei=false){
    3.     static $iter;
    4.     if(!$iter) $iter=0;
    5.     $iter++;
    6.     return !$rei?count($arr):$iter-1;
    7. }
    8. $arr=range(0,999);/*
    9. for($i=0,$c=_count($arr);$i<$c;$i++){  //1
    10. }*/
    11. for($i=0;$i<_count($arr);$i++){  // 1001
    12. }
    13. print _count($arr,true);
     
  2. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    Ps. правила говно =) просто потому что правила
    Pss.
    пыхи ещё
     
  3. mpak

    mpak Активный пользователь

    С нами с:
    30 окт 2006
    Сообщения:
    440
    Симпатии:
    0
    У меня точно правильный код. И запрос один раз выполняется. Проверяйте. Иначе он просто зациклил выводя одни и те же данные.

    Код (Text):
    1. foreach(mpql(mpqw("SELECT * FROM `table_name`")) as $k=>$v){
    2.     print_r($v);
    3. }
    Код (Text):
    1. # Запрос к базе данных
    2. function mpqw($sql, $info = null){
    3.     global $conf;
    4.     $microtime = microtime();
    5.     $result = @mysql_query($sql, $conf['db']['conn']);
    6.     if (strlen(mysql_error()) && ($conf['user']['gname'] == $conf['settings']['admin_grp']))
    7.         echo "<p>$sql<br><font color=red>".mysql_error()."</font>";
    8.     if ($conf['settings']['analizsql_log']){
    9.         $num = count($conf['db']['sql']);
    10.         $conf['db']['sql'][$num]['info'] = $info ? $info : $conf['db']['info'];
    11.         $conf['db']['sql'][$num]['time'] = substr((substr(microtime(), strpos(microtime(), ' ')) - substr($microtime, strpos($microtime, ' ')) + microtime() - $microtime), 0, 8);
    12.         $conf['db']['sql'][$num]['sql'] = $sql;
    13.     }
    14.     return($result);
    15. }
    Код (Text):
    1. # Обработка результата запроса к базе данных
    2. function mpql($dbres, $ln = null, $fd = null){
    3.     $result = array();
    4.     while($line = mysql_fetch_array($dbres, 1))
    5.         $result[] = $line;
    6.     if ($ln !== null){
    7.         $result = $result[$ln];
    8.         if ($fd)
    9.             $result = $result[$fd];
    10.     }
    11.     return $result;
    12. }
    Хотя можете не проверять я по логам посмотрел. Запрос вывполняется один раз за 0,000275 c.
     
  4. Костян

    Костян Активный пользователь

    С нами с:
    12 ноя 2009
    Сообщения:
    1.724
    Симпатии:
    1
    Адрес:
    адуктО
    mpak
    а что нельзя ветчить и сразу обходить, зачем два раза циклить?
     
  5. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    Код (Text):
    1. foreach(mpql(mpqw("SELECT * FROM `table_name`")) as $k=>$v){
    Говнокод.
    Правила - УГ.
     
  6. mpak

    mpak Активный пользователь

    С нами с:
    30 окт 2006
    Сообщения:
    440
    Симпатии:
    0
    Даешь анархию. В топку станадарты. Нах правила оформления.

    После этого что удивляться что все пишут что попало.

    Можно. На момент написания было удобно так сделать. Планирую переписать этот участок кода. В модулях эта конструкция не встречается, только в движке несколько раз.
     
  7. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    0 < (вызовы) < 2, где (вызовы) = N
    И зачем было писать "менее двух раз"?
     
  8. mpak

    mpak Активный пользователь

    С нами с:
    30 окт 2006
    Сообщения:
    440
    Симпатии:
    0
    Если переменная будет использоваться один раз. Либо вообще не использоваться.
    Все верно. В обоих случаях объявлять переменную не стоит.
     
  9. iliavlad

    iliavlad Активный пользователь

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
    если запрос будет некорректный, когда и как вы это увидите? а если по дизайну фон будет красный? а если пользователь будет использовать код с таким запросом?

    покрытие тестами 101% ?)
     
  10. mpak

    mpak Активный пользователь

    С нами с:
    30 окт 2006
    Сообщения:
    440
    Симпатии:
    0
    Код обеих функций используемых в данном случае написан выше. 9 строк в одной и 13 во второй. Я их использую еже не один год. Попробуйте вы. Может что нибудь найдете того что я не смог увидеть за это время. Данные конструкции используются мной повсеместно. Можете посмотреть исходный код ftp://mpak.su/ Не представляю каким образом после столького времени использования код может оказаться нерабочим.
     
  11. iliavlad

    iliavlad Активный пользователь

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
    это не ответ на вопросы(
    могут выпустить версию php, apache, mysql, linux, windows с багом и после обновления ваш код будет нерабочим. или вы уже не один год не обновляетесь?
     
  12. mpak

    mpak Активный пользователь

    С нами с:
    30 окт 2006
    Сообщения:
    440
    Симпатии:
    0
    Стараюсь при первой возможности обновляться до полследних версий. Во всяком случае php http://81.177.32.154/phpinfo
     
  13. iliavlad

    iliavlad Активный пользователь

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
    тогда можете ответить на вопрос, как вы увидите сообщение об ошибке красными буквами на красном фоне?) и что получит пользователь в случае ошибки в запросе?

    и вроде в функциях не 9, и не 13 строк...
     
  14. mpak

    mpak Активный пользователь

    С нами с:
    30 окт 2006
    Сообщения:
    440
    Симпатии:
    0
    Не пойму в чем собственно ошибка. Для пользвователей в процессе работы сайта все ошибки работы скрипта скрываются. Правильно это или не можно поговорить но у меня сделано так.

    Если считать только содержимое функции то 9 и 13 вместе с обявлением глобавльных переменных и возвратом результата. Будем считать вместе?
     
  15. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    Не нада сравнивать себя и свои "правила" со стандартами.
    Это было сказано конкретно про _ваши_ правила - поток сознания, часто вообще к программированию отношения не имеющий.
     
Статус темы:
Закрыта.