Сайт поддержки администраторов САР, у нас вы можете скачать скрипты буксов, ферм и т.д, а также обсудить все это на форуме

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

Мастер класс по 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->ЯЧЕЙКА;


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


Рубрика: Бесплатное » Дополнения   |   Автор: kirill   |   Просмотры: 5971
Комментариев: 30
Публикаций: 0
ICQ: 627021203
  Автор: zhenikdst   |   Группа: Пользователи   |   Дата: 03 августа 2012  
Ура новоя статья на шопе держи +
Комментариев: 36
Публикаций: 2
ICQ: 643680
  Автор: Артём   |   Группа: Пользователи   |   Дата: 03 августа 2012  
А толку от такого класса?


return self::$instance->MySQLi->real_escape_string(htmlspecialchars($str));

Зачем она тут?
Комментариев: 64
Публикаций: 8
ICQ: 959098
  Автор: kirill   |   Группа: Программисты   |   Дата: 03 августа 2012  
$name = db::query("SELECT `ЯЧЕЙКА` FROM `ТАБЛИЦА` WHERE `ЯЧЕЙКА`='esc(ДАННЫЕ)'");
Комментариев: 36
Публикаций: 2
ICQ: 643680
  Автор: Артём   |   Группа: Пользователи   |   Дата: 03 августа 2012  
kirill, Я не конкретно про функцию esc(). Я о htmlspecialchars().
Комментариев: 64
Публикаций: 8
ICQ: 959098
  Автор: kirill   |   Группа: Программисты   |   Дата: 03 августа 2012  
Цитата: Артём
kirill, Я не конкретно про функцию esc(). Я о htmlspecialchars().


До кучи smile
Комментариев: 52
Публикаций: 2
ICQ: 207679
  Автор: Scrin   |   Группа: Пользователи   |   Дата: 03 августа 2012  
скрипт тегс еще бы добавил, чтоб хсс не прошло)))
Комментариев: 118
Публикаций: 2
ICQ: 819374
  Автор: Rufus   |   Группа: Программисты   |   Дата: 03 августа 2012  
Хм... Что-то мне подсказывает, что класс был написан для понту, абы дать понять что ООП кто-то, когда-то видел. На практике этот класс будет работать медленно, а многие обращения через себя в припрыжку будут только основой...

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

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

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


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

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

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

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

class rufus_sql extends MySQLi{

}

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

Как работать внутри класса? Self и parent в помощь)
Комментариев: 64
Публикаций: 8
ICQ: 959098
  Автор: kirill   |   Группа: Программисты   |   Дата: 04 августа 2012  
Это показательный класс и не доделаны я написал об этом)
Комментариев: 118
Публикаций: 2
ICQ: 819374
  Автор: Rufus   |   Группа: Программисты   |   Дата: 04 августа 2012  
kirill,
Значит я плохо читал(
Комментариев: 64
Публикаций: 8
ICQ: 959098
  Автор: kirill   |   Группа: Программисты   |   Дата: 04 августа 2012  
Rufus,
наверно)

Зы. Это только пример, тут нет не отключения не отчисти памяти!
Комментариев: 330
Публикаций: 166
ICQ: 650073308
  Автор: Alex   |   Группа: Пользователи   |   Дата: 09 октября 2012  
это паблик


я встречал похожее. очень сильно похожее когда искал готовое решение. я остановился на DBSimple
Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.