Intereting Posts
Извлечение расстояния от функции FacetWP Proximity для отображения в шаблоне WordPress Как вызвать пользовательские java-методы из PHP? SQLSTATE : базовая таблица или представление не найдены: 1146 Таблица X не существует HTML PHP Отобразить имя пользователя после успешного входа в систему CREATE TABLE, если NOT EXISTS терпит неудачу, таблица уже существует Числа к римским номерам с php Преобразование количества минут в часы и минуты с помощью PHP вызов CURL с данными POST и заголовками в командной строке Zend Framework 2 скачать файл CodeIgniter: помощники загрузки (pre_controller) Как избежать переопределения Podio каждый раз, когда я запрашиваю данные из Podio? WordPress Theme Customizer – добавление области для перемещения пользователей и организации виджетов ОШИБКА: Предупреждение: mysql_num_rows () ожидает, что параметр 1 будет ресурсом, boolean задан в C: \ xampp \ htdocs \ … \ … php в строке 19 Рекурсивно заменить ключи в массиве Использование формулы Хаверсина с PostgreSQL и PDO

Различия в процедурных и объектно-ориентированных реализациях mysql в php?

Есть ли существенная разница в использовании объектно-ориентированного подхода над процедурным подходом при реализации mysql в php? На веб-сайте php о mysqli_query ( http://www.php.net/manual/en/mysqli.query.php ) он предоставляет пример того и другого, и я просто хочу знать, есть ли существенная разница в производительности, или просто знать, когда использовать каждый из них.

Ответ на который лучше , «это зависит». Как и в любом случае, существует множество различных подходов, и вы также должны иметь в виду, что код, который использует объекты, необязательно объектно ориентирован, но все еще может быть написан процедурно. В том же ключе код, который не использует объекты, все еще может быть модульным.

Тем не менее, я хотел бы использовать класс mysqli . Нет существенной разницы в производительности. Вероятно, вы не поймете некоторых преимуществ использования класса DB, например упрощенного полиморфизма, поэтому мой единственный аргумент в пользу использования класса – это то, что я предпочитаю синтаксис. Однако, вместо того, чтобы напрямую использовать mysqli я бы, вероятно, рекомендовал вам продлить или создать его. Вы можете сделать это только с помощью класса.

 class DB extends mysqli { public function __construct() { parent::__construct($_SERVER['DB_HOST'], $_SERVER['DB_USER'], $_SERVER['DB_PASS']); } } 

Это очень мелкий пример.

Пример полиморфизма, о котором я говорил выше, был бы примерно таким:

 class User implements DAO { private $db; public function __construct(DB $db) { $this->db = $db; } } //Testing code is simplified compared to using it in production class TestDB extends DB {} new User(new TestDB); new User(new DB); 

Кстати, я категорически предпочитаю PDO над mysqli

Поскольку вы стажер, было бы целесообразно выяснить, кто будет поддерживать код в будущем.

  1. Никто в компании. Готовьтесь к ООП, если вы довольны этим, поскольку ООП является текущей практикой.
  2. В доме. Идите с текущей практикой, надеюсь, ООП

Нет, нет никакой разницы.

Но вы упускаете из виду более важную вещь: никакие сырые функции API mysqi не должны использоваться в коде приложения, ни ООП, ни процедуре.

Существует одна вещь, неизвестная пользователям PHP: вызовы API не предназначены для использования как есть. Их нужно обернуть в какую-то библиотеку. Без него mysqli – это просто боль в спине, ему требуется в два раза больше кода, чем старый добрый mysql ext.

Таким образом, имеет значение, если вы используете такой слой, но не имеет значения, написано ли оно с использованием процедурного или ООП внутри.

Но эта библиотека должна быть построена в форме класса. Другого пути нет.