За последние 24 часа нас посетили 22637 программистов и 1121 робот. Сейчас ищут 650 программистов ...

Наболевшее в PHP

Тема в разделе "Прочее", создана пользователем kostyl, 30 апр 2009.

  1. выбери Йаву! ))
     
  2. lexa

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

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Мужчина, вы имеете в виду яву, для которой чтобы написать hello world надо создать класс, метод, типизировать их и в конечном итоге импортировать библиотеку для вывода текста на экран, а обращение к методу длиннее, чем выводимый текст? Фантастический язык, ага. :)

    Я выбрал питон, а потом снова выбрал PHP. :) Строгая типизация совсем не радует моё сердце. Я понять не могу почему
    Код (Text):
    1. string = '28';
    2. print string + 2;
    выкидывает исключение, а не преобразует переменную в число.

    P.S. Кстати, присматриваюсь к Boo - надстройке над C#. У меня какая-то сакральная любовь и дотнету. Нифига к нему не делал, но кажется что трава там зелёная круглый год, море и голые бабы пиво носят.
     
  3. kostyl

    kostyl Guest

    мочи на FoxPro ))))
     
  4. Koc

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

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    1) не нравятся нзвания переменных в доке:
    int substr_count ( string $haystack , string $needle )
    а можно было б
    int substr_count(string $where , string $what)

    2) не нравятся разные префиксы: часть str, str_, без префикса. То же и к массивам вроде.


    3) в одной ф-ции строка, которую ищем на 1 месте, в другой на предпоследнем. Хотя может это я насочинял.

    ну пока ничего более.
     
  5. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Иголка в стоге сена -- это еще ничего. Меня конкретно бесит, что в соседних функциях местами их меняют (это и есть твой третий пункт)
     
  6. decoder

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

    С нами с:
    11 фев 2006
    Сообщения:
    469
    Симпатии:
    0
    Просто нужно не забывать "лишние" мысли комментить :)
     
  7. DZEN

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

    С нами с:
    10 сен 2007
    Сообщения:
    250
    Симпатии:
    0
    Не ты первый. Разработчики тихо отфутболивают list()`ом.

    Поддерживаю. Годика с два назад написал пару штучек для вэба. Ничего так. Всё так... упорядоченно... и напряжно...
    Вообще после turbo pascal, c++, c#, Java, и даже ruby и vb - самый менее раздражающий язык :D
     
  8. Mr.M.I.T.

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

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    А ха ха ха =(((((((
    6 часов сидел не мог понять почему дб симпле, не хочет обрабатывать прэйсхолдер ?a а выдаёт ошибку
    блин я 6 часов рыл эту <цензура> дб симпл!! вся куйня была из-за маленького недочётика, вообще в другом месте
    я в шоке, вообще случайно заметил где собака зарыта
     
  9. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    PHP:
    1. <?php
    2.  
    3. // Пишем в глобальный массив
    4. $GLOBALS['greeting'] = 'Hello, World<br /><br />';
    5. $GLOBALS['eHandler'] = new Exception('Вот такие у нас пироги');
    6.  
    7. // В результате получаем полную хрень
    8. echo $greeting;
    9.  
    10. // А это и того хуже
    11. echo $eHandler->GetMessage();
    12.  
    13. ?>

    Ужжжжжжжасно неприятная вещь.
     
  10. kostyl

    kostyl Guest

    Apple
    ну и в чем прикол?
     
  11. Koc

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

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    Капитан Очевидность mode on
    мы записывали в массив, а в результате этого объявились переменные, которых мы не хотели создавать.
    Так-то.
     
  12. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Типа глобальный массив включает register globals для своих переменных
     
  13. kostyl

    kostyl Guest

    Koc
    Kreker
    а, дык я и не юзаю его вообще...
     
  14. Koc

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

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    kostyl
    я тоже. У меня в проекте последнем вообще кол-во глобальных переменных стремится к нулю. Пока это еще не ноль, но к нему и стремимся.

    А вот на работе не гнушаются конструкциями типа:
    PHP:
    1. <?php
    2. /*BEGIN_TEMP_EN_1_500*/
    3. $GLOBALS["templates_EN"][1][2][500] = "content_google";$GLOBALS["temp_desc_EN"][1][500] = "Google maps embedded";/*END_TEMP_EN_1_500*/
    4. ?>
    5.  
    Kreker
    можно так же сказать, что этот массив обрабатывается функцией extract :wink:
     
  15. kostyl

    kostyl Guest

    Koc
    у меня глобальные только константы и статические переменные и свойства классов...
     
  16. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    У меня в проектах количество использования записи и чтения суперглобального массива равно нулю.
    Для классов, посколько они не могут читать декларированные переменные за пределами метода, использую ссылочную передачу необходимых переменных в конструктор, с последующим диблированием опять-таки ссылки в закрытые (private) свойства класса.
    Для хранения каких-либо данных использую статические структуры, которые доступны как внутри класса, так и за его пределами.

    Пример выше я написал всего лишь для того, чтобы показать, что именно мне не нравится.
    Кстати, мануальные register_globals с такой хренью можно замутить.
    Навалял пример на скорую руку:

    PHP:
    1. <?php
    2. /**
    3.  * Мануальное включение register globals непосредственно из скрипта
    4.  */
    5.  
    6.  
    7. /**
    8.  * Этот блок выполняет имитацию register_globals = On
    9.  */
    10. foreach($_REQUEST as $key => $value)
    11. {
    12.     $GLOBALS[$key] = $value;
    13. }
    14.  
    15. // Смотрим, что получилось
    16. if(isset($do)) {
    17.     echo 'Name: '.$name.'<br />';
    18.     echo 'Age: '.$age;
    19. }
    20.  
    21. ?>
    HTML:
    1. <form action="?do=send" method="post">
    2.     <input type="text" name="name" value="Apple"> Username <br />
    3.     <input type="text" name="age" value="Unknown"> Age <br />
    4.     <input type="submit" value="Send">
    5. </form>
    Вот так вот ...
     
  17. PHP:
    1. <?php
    2. extract($_REQUEST);
     
  18. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    флоппик
    Ладно-ладно, ты меня уделал.
     
  19. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    PHP:
    1. <?php
    2.  
    3.  
    4. class Detest
    5. {
    6.     public function __construct()
    7.     {
    8.         new Detest();
    9.     }
    10. };
    11.  
    12. $detest = new Detest();
    13.  
    14. ?>
    :)
     
  20. Koc

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

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    PHP:
    1. <?
    2. // плохо, что нельзя делать так:
    3. $row['date'] =  (new DateTime($row['date']))->format('d.m.Y H:i');
    4. // или так
    5. $row['date'] =  new DateTime($row['date'])->format('d.m.Y H:i');
     
  21. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Для таких случаев я делаю обёртки со статическим методом create.

    PHP:
    1. <?php
    2. $row['date'] = MyDateTime::create($row['date'])->format('d.m.Y H:i');
    А вообще в данном случае можно так написать:

    PHP:
    1. <?php
    2. $row['date'] = date_create($row['date'])->format('d.m.Y H:i');
     
  22. Koc

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

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    да в курсе я про статические обертки, сам их использую для цепочек вызовов.

    Вот валидатор к примеру:
    PHP:
    1. <?
    2. FV_Advanced::create()
    3.     ->setSettings($settings)
    4.     ->setRules($rules)
    5.     ->setMessages($messages)
    6.     ->validate($_POST, $values, $this->errors);
    7.  
    Если уж на то пошло, то date(strtotime()) еще не отменяли
     
  23. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    Так же не отменяли UNIX_TIMESTAMP в SQL запросе :)
    Так же не отменяли DATE_FORMAT в SQL запросе :)
     
  24. Mr.M.I.T.

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

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    funciont_name()['var'] - ужаснах
     
  25. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Круть