Мастер класс по MySQLi & ООП от Кирилла

Объектно-ориентированное программированиеОбъектно-ориентированное программирование
В данной статье я вам покажу класс для работы с MySQLi
Вижу много тут стало тем типо ООП то ООП се и на самом деле многие даже близко элементарные классы функции каскады даже не знают как пи шиться и для чего они нужны
За то говорят ООП так серьезно даже сами верят в свой говно код.
PS. Не в обиду не кому конечно! просто подучите немного почитайте вам же это поможет!
Я конечно не горжусь и не хвастаюсь тем что я знаю прекрасно все языки и стили программирования но и скажу так знаю тоже не мало. Короче меньше слов больше дела, и так начнем.

<?PHP
      //////////////////////////////////////////////////////////
      $dbOptions = array(
          'db_host' => '', // HOST подключения обычно "localhost"
          'db_user' => '', // Имя пользователя
          'db_pass' => '', // Пароль пользователя
          'db_name' => ''  // Название базы данных
        );
      //////////////////////////////////////////////////////////

      // Полетели;)
      class db {
          private static $instance;
          private $MySQLi;
          // Конструктор класса db
          private function __construct(array $dbOptions){
          // Подключение к серверу MySQL
          $this->MySQLi = @ new mysqli($dbOptions['db_host'],
                                       $dbOptions['db_user'],
                                       $dbOptions['db_pass'],
                                       $dbOptions['db_name']
                                    );
              // Обработка подключения на сбои
              if(mysqli_connect_errno()):
                  throw new Exception('Ошибка базы данных.');
              endif;
              // Кодировка по умолчанию
              $this->MySQLi->set_charset("utf8");
            }

          // Осуществляем безопасный вызов
          public static function init(array $dbOptions){
              if(self::$instance instanceof self):
                  return false;
              endif;
              self::$instance = new self($dbOptions);
            }

          // Кто знает тот поймет
          public static function getMySQLiObject(){
              return self::$instance->MySQLi;
            }

          // Посылаем запрос в БД
          public static function query($q){
              return self::$instance->MySQLi->query($q);
            }

          // Присекам все попытки SQL Injection
          public static function esc($str){
              return self::$instance->MySQLi->real_escape_string(htmlspecialchars($str));
            }
        }

        // Подключение
        db::init($dbOptions);
        
        // Запрос
        $name = db::query("SELECT `ЯЧЕЙКА` FROM `ТАБЛИЦА` WHERE `ЯЧЕЙКА`='ДАННЫЕ'");
        $base = $name->fetch_object();
        echo $base->ЯЧЕЙКА;

Зы. Это только пример, тут нет не отключения не отчисти памяти!

0

Понравилась статья? Поделись в соц. сетях:

Похожие новости

Комментарии

  1. Хм… Что-то мне подсказывает, что класс был написан для понту, абы дать понять что ООП кто-то, когда-то видел. На практике этот класс будет работать медленно, а многие обращения через себя в припрыжку будут только основой…

    Цитата: kirill
      throw new Exception('Ошибка базы данных.');


    Информативно, исключения именно для этого и созданы)

    Цитата: kirill
      $name = db::query("SELECT `ЯЧЕЙКА` FROM `ТАБЛИЦА` WHERE `ЯЧЕЙКА`='ДАННЫЕ'");

    Вот скажи мне, тупому дигенерату, зачем нам конструктор и деструктор, если мы не обьявляем экземпляр класса? А просто дергаем его как говно…

    При 10и запросах это равносильно созданию 10ти экземпляров, а скорость сам понимаешь юудет не фонтан…

    Если не веришь, то давай проведем тест, я свой класс из магазина вытяну, а ты этот и сделаем на одном и том-же сервере аналогичные запросы, даже давай идентичные. Готов тягаться на пиво, что твой класс будет вести себя как черепаха, а памяти он сожрет довольно таки не мало(

    Я сейчас за минуту напишу аналог)

    class rufus_sql extends MySQLi{

    }

    Готово) Ну и полиморфизм рулит)

    Как работать внутри класса? Self и parent в помощь)

    0

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

Авторизация
*
*
Регистрация
*
*
*
Генерация пароля