1. PHP / Говнокод #4358

    +159

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    // Функция для подключения к БД
    
    // *** параметры коннекта ***
    ErrorsOff();
    $this->DbAccess = @mysql_connect($this->Server, $this->User, $this->Password);
    ErrorsOn();
    if($this->DbAccess){
    	$this->Connected = true;
    	@mysql_query("set character_set_client='cp1251'");
    	@mysql_query("set character_set_results='cp1251'");
    	@mysql_query("set collation_connection='cp1251_general_ci'");
    	$this->Version = mysql_get_server_info();
    	if($dbname != "" && @mysql_select_db($dbname, $this->DbAccess)){
    		// *** отмечаем текущую базу ***
    	}
    }else{
    	$this->Error('Не удалось подключиться к серверу!');
    	$this->MySQLError();
    	return false;
    }
    $this->Good();
    return true;

    Запостил: Мартин, 12 Октября 2010

    Комментарии (15) RSS

    • Может, конечно, не в тему, но что делает функция ErrorsOff() ? Себе такую хочу ;)
      Ответить
      • error_reporting(0) надо полагать.
        Ответить
      • Убирает все ошибки в программе, и еще немного ее оптимизирует
        Ответить
      • $SITE_ERRORS = true;

        function ErrorsOn()
        {
        global $SITE_ERRORS;
        $SITE_ERRORS = true;
        }

        function ErrorsOff()
        {
        global $SITE_ERRORS;
        $SITE_ERRORS = false;
        }

        В движке своя система вывода ошибок)))
        Ответить
    • да, и еще замечание, почему не SET NAMES?
      Ответить
      • Тоже задавался этим вопросом. Видимо те, кто писал код, об этом не знали (=
        Ответить
    • а где собственно, здесь ошибки?
      п.с. прошу не пинать, я новичок - учусь не говнокодить :)
      Ответить
      • как минимум затыкание фэйлов, а-ля @
        Ответить
      • ErrorsOff(); + @ потому как во-первых, плохой тон, а во-вторых - оверкил.

        про засобаченные mysql_querry - rtfm.

        if($dbname != "" && @mysql_select_db($dbname, $this->DbAccess)){
        // *** отмечаем текущую базу ***
        }
        ибо дбнейм, по логике приведенной выше, надо сделать собственным полем объекта, потому как сервер, пользователь и пароль хранятся именно так.
        пустая ветка ифа и еще одна собачка - снова дурной тон. об отрицаниях автор знает, а в случае фейла у нас все равно вернется тру.

        $this->Good();
        сказал автор "и это хорошо". если там выполняется присвоение переменных инстанса вроде this->connected = true то непонятно различие в стиле кодирования (раньше - инплейс), а если нет - то не ясно, почему этот вызов не может располагаться в модуле запускающем "функцию подключения к БД".

        и еще про "Архитектуру"©:
        this->conneced - не там и слишком рано.
        this->mysqlError() - плохо из-за названия (хотя бы errorMySql - все рядышком будут) и из за того, что в глобал неймспейсе этих эрроров будет 100500: от StupidUserError() до LameCodeInternalFailure(). собрать все в эррор с энумом тайпов и приоритетами. одни ерроры - просто логим, со вторых - даим.

        ---------
        все написанное выше - коммонсенс.
        комментарии от людей на пхп разрабатывающих люто приветствуются.
        Ответить
        • >> пустая ветка ифа и еще одна собачка - снова дурной тон
          Где пустая ветка условия? Собачки только говорят интерпретатору, что не надо выводить ошибку, если она произойдет в этом месте. Функции будут продолжать возвращать значения.

          >> что в глобал неймспейсе этих эрроров будет 100500
          Ошибок, кстати, в логах много накапливается (бывает 50-100 мб)...
          Ответить
          • так там не пустая ветка? поставили бы как это обычно бывает троеточее. я наивно решил, что внутри ифа - только одна строка, и та - комментарий.

            вывод ошибок как-бы отключается глобально.

            про 100500 - это я о функциях, уникальных для каждого типа ошибки.
            Ответить
        • Спасибо большое :)
          Ответить
      • Как еще сказал Lure Of Chaos, можно спокойно заменить три запроса на установление кодировки одним: "SET NAMES cp1251".

        А вообще лучше настроить мускул на отдачу нужной кодировки сразу
        Ответить

    Добавить комментарий