2013-11-20 5 views
-1

나는 php와 mysql을 가지고 놀고 있으며 서로 다른 두 가지 연결 방법을 사용했다. OOP 스타일이나 절차 스타일을 사용할 수 있습니다. 나는 OOP에 처음 온 사람이다.OOP 프로그래밍 대 프로 시저 스타일 프로그래밍

문서 (http://us1.php.net/manual/en/mysqli.construct.php )를 보면 아래의 객체 지향 스타일이 표시됩니다.

if (mysqli_connect_error()) { 

는 OOP 스타일 내에서 절차 적 스타일을 사용하는 것이 아닌가 :

<?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(); 
?> 

내 질문 라인에 대해 무엇입니까? 이것이 OOP 스타일을 사용하지 않는 경우 사용할 함수입니다.

if (parent::connect_error()) { 

if (mysqli::connect_error()) { 

또는

나는 모두를 시도했지만 그들은 작동하지 않습니다 : 그것은 무엇인가 할 수 없습니다.

답변

0

mysqli (와 foo_mysqli)는 connect_error라는 속성을 가진 객체이기 때문에 ($ mysqli-> connect_error에 대괄호가 없다는 것에주의하십시오. docs). 그래서 함수를 호출하려고하면 아무것도 얻지 못합니다 - 객체의 속성을 확인하십시오.

게다가 - 설명서를 자세히 읽으면주의 깊게 도움이됩니다.

+0

그래서 $ mysqli-> connect_error를 mysqli_connect_error()와 같은 장소에서 사용할 수 있어야합니까? ... 나는 그것을 시도하고 다른 오류 메시지가 나타납니다. – user3015018

+0

Ok ... 나는 복사 한 코드 위에 "PHP는 5.2.9와 5.3.0까지 $ connect_error가 깨졌습니다."라고 말하는 "공식적인"방법입니다. " $ mysqli-> connect_error는 작동해야합니다 ... 그러나 PHP 5.3.3에서 $ connect_error는 여전히 고장난 것으로 보입니다. – user3015018

+0

프로그래밍 스타일을 고려할 때 메모리 시스템에 대해서도 생각해 볼 수 있습니다. 의미 OOP 언어가 절차 언어보다 메모리를 어떻게 처리합니까? – BDR