2013-11-20 3 views
-1

Я играю с php и mysql и наткнулся на два разных способа подключения. Я могу использовать стиль ООП или процедурный стиль. Я новичок в ООП.Программирование ООП и процедурного программирования стиля

При взгляде на документацию (http://us1.php.net/manual/en/mysqli.construct.php ) он показывает нижеуказанный объектно-ориентированный стиль.

<?php 

class foo_mysqli extends mysqli { 
    public function __construct($host, $user, $pass, $db) { 
     parent::__construct($host, $user, $pass, $db); 

     if (mysqli_connect_error()) { 
      die('Connect Error (' . mysqli_connect_errno() . ') ' 
        . mysqli_connect_error()); 
     } 
    } 
} 

$db = new foo_mysqli('localhost', 'my_user', 'my_password', 'my_db'); 

echo 'Success... ' . $db->host_info . "\n"; 

$db->close(); 
?> 

Мой вопрос о линии:

if (mysqli_connect_error()) { 

не то, что с использованием процедурного стиля в стиле ООП? Это функция, которую вы используете, если не используете стиль ООП. Разве это не должно быть что-то вроде:

if (mysqli::connect_error()) { 

или

if (parent::connect_error()) { 

Я попробовал оба, но они не работают.

ответ

0

Потому что в OOP mysqli (и ваш foo_mysqli) есть объект с PROPERTY, называемый connect_error (обратите внимание на отсутствие скобок в $ mysqli-> connect_error в docs). Поэтому попытка вызвать функцию не дает вам ничего - проверьте свойство объекта.

Кроме того, документация на чтение очень помогает.

+0

Итак, я должен иметь возможность использовать $ mysqli-> connect_error в том же месте, что и mysqli_connect_error()? ... Я попробовал это и получил другое сообщение об ошибке. – user3015018

+0

Хорошо ... Я пропустил всю часть кода, который я скопировал, который говорит: «Это официальный« OO », чтобы сделать это, НО $ connect_error был сломан до PHP 5.2.9 и 5.3.0.», Что показывает, что $ mysqli-> connect_error должен работать ... ОДНАКО Я на PHP 5.3.3 и $ connect_error все еще кажется сломанным. – user3015018

+0

Когда вы рассматриваете стиль программирования, вы также можете вспомнить систему памяти. Смысл как языки ООП связывают память с процедурами ... – BDR

Смежные вопросы