2013-05-29 4 views
-5

Как внести запрос в базу данных PDO?Использовать PDO внутри другого класса

+7

[ООП основы] (http://php.net/manual/en/language.oop5.basic.php), [переменная сфера] (HTTP://php.net/manual/en/language.variables.scope.php) – deceze

+4

Вы не можете иметь код непосредственно внутри объявления класса. –

ответ

0

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

class Jcart { 
    public $config  = array(); 
    private $items  = array(); 
    private $subtotal = 0; 
    private $itemCount = 0; 
    private $db;  

    public function __construct() { 
     $this->db = new PDO(); 

    } 

    public function someMethod() { 
     // Your PDO class is now available on the '$this' scope 
     $prepare = $this->db->prepare(...); 
    } 
} 

Чтобы использовать значение из-за пределы вашего класса вы должны сделать это публично, например, ваше значение конфигурации, то из вне класса вы можете получить к нему доступ, как и любая собственность.

$cart = new JCart(); 
$cart->config; // outputs $config property from JCart 
+0

Было бы лучше сделать '$ db' зависимость в конструкторе. –

3

Если Jcart имеет depencancy для связного PDO объект чистейшего, что нужно сделать было бы передать его в конструктор Jcart и сохранить его в защищенной или частную собственность. Когда вы хотите что-то сделать, вы сделаете способ получить то, что хотите.

class Jcart{ 
    private $db; 

    public function __construct(PDO $db){ 
     $this->db = $db; 
    } 
    public function getItems(){ 
     $sql = "select * from items"; 
     $res = $this->db->query($sql); 
     return $res->fetchAll(); 
    } 
} 

Образец использования будет. (Предполагая, что $ дБ является связным объектом ПДО)

$jc = new Jcart($db); 
$items = $jc->getItems(); 
Смежные вопросы