• Правильно ли реализовал подключение к БД?

    @kirill_danshin
    PHP/Go разработчик, системный администратор
    Я бы порекомендовал не хранить данные для подключения к базе в константах. Я бы написал это так:

    class Model
      {
        private static $db_creds = [
            'user' => 'blog',
            'host' => 'localhost',
            'pass' => '12345',
            'db'    => 'blog'
        ];
    
        static function db()
        {
          // закешируем соединение, зачем каждый вызов создавать новое?
          static $db;
          if (is_null($db)) {
              $db = new mysqli(
                  self::$db_creds['host'], 
                  self::$db_creds['user'], 
                  self::$db_creds['pass'], 
                  self::$db_creds['db']
              );
              if ($db->connect_errno) {
                  echo "Не удалось подключиться к MySQL: {$db->connect_error}";
                  // в следующий вызов попробуем еще раз
                  $db = null;
              }
          }
          return $db;
        }
    
        public function get_data()
        {}
      }


    И посоветовал бы использовать исключения для обработки ошибок. Их не нужно показывать пользователю, лучше их обработать, например, показать закешированную версию, перенаправить на другую страницу, показать красивое уведомление о 500 и т.д.
    Ответ написан
    8 комментариев
  • Когда использовать условия йоды?

    @kirill_danshin
    PHP/Go разработчик, системный администратор
    Условия Йоды стоит использовать тогда, когда боишься перезаписать переменную, вместо сравнения. Например:
    if($a = 'b'){
    /*Этот код будет выполнятся всегда, 
      так как была допущена опечатка
    */
    }

    if('b' = $a){
    /*Этот код упадет с ошибкой парсера.
      Нельзя записать в строку переменную :)
    */
    }

    if('b' == $a){
    /* А этот будет работать, как ожидается.  */
    }
    Ответ написан
    Комментировать