2013-09-22 1 views
-1

я следующий метод внутри класса называется Connection:! Empty() проверить не удается при проверке состояния ссылки PDO ... почему?

public function output($query = null) { 
    if (!empty($this->attributes["link"])) { 
     print "OK!"; 
    } else { 
     print "NO!"; 
    } 
} 

Значение $this->attributes["link"] исходит из следующей операции в конструкторе:

try { 
    $this->attributes["link"] = new \PDO(<...>); 
catch (\PDOException $e) { 
    <...> 
} finally { 
    return $this; 
} 

Я обычно использовать if (!empty(<...>)) { <...> } конструкции для проверки переменного существование, и он работает так, как ожидалось, в каждой структуре или фрагменте кода до сих пор ЗА ИСКЛЮЧЕНИЕМ этого.

Будучи объектом, похоже, не является причиной того, что это не сработает, поскольку я могу проверить ту же проверку с объектом менеджера баз данных, и он работает. Может быть, объект PDO - это особый объект, не подверженный переменному тестированию, или есть что-то, что мне не хватает?

EDIT - Моя конфигурация программного обеспечения выглядит следующим образом: Linux 3.11.1, Apache 2.4.6, PHP 5.5.4 и MySQL 5.6.13

ответ

0

Почему бы не просто проверить, если это экземпляр PDO?

if ($this->attributes['link'] instanceof \PDO) { 
    // ... 
} else { 
    // ... 
} 
+0

Никогда не использовал оператор 'instanceof' в PHP (есть некоторые вещи о ООП в PHP, которые я еще не изучил), так что ... удивительно! Моя проблема не решена сама по себе, но я очистил код, и теперь он еще эффективнее. Большое спасибо! :) –

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