<?php class db_driver { "sql_user" => "root" , "sql_pass" => "" , "sql_host" => "localhost", "sql_tbl_prefix" => "" , ); private $wynik; private $connection_id; function __construct($get = false, $host = '', $user = '', $pass = '', $db = '', $prefix = ''){ if($get){ $this->dane['sql_host'] = $host; $this->dane['sql_user'] = $user; $this->dane['sql_pass'] = $pass; $this->dane['sql_database'] = $db; $this->dane['sql_tbl_prefix'] = $prefix; } $this->connect(); } ... public function select($array ,$wypisz = false){ //kolumny //z tabel //jezeli podany warunek to dodac $select .= " WHERE ".$array['where']; //w razie czego dodac listowanie po kolumnie $select .= " ORDER ".$array['order']; //LIMIT $select .= " LIMIT ".$array['limit']; //w razie czego wypisuje zapytanie if($wypisz) return $this->query($select); } ... private function query($querry){ return $this->wynik; } ... } ?>
i zapisuje w pliku sql.php
potem importuje ten plik do pliku index.php, jakis inny plik jeszcze czyli logowanie.php
następnie inicjuje obiekt:
<?php require_once('dane.php'); require_once('klasy/sql/sql.php'); require_once('klasy/logowanie.php'); $DB = new db_driver(true, $dane['host'], $dane['user'], $dane['haslo'], $dane['baza'], $dane['prefix']); ?>
i robi się problem
bo moge działać na $DB i korzystać z tego tylko w plikach index.php i sql.php
w index.php i sql.php to działa:
<?php '*', ), 'users', ), 'where' => 'user = abc', ); $wynik = $DB->select($array, true); ?>
jak identyczny kod skopiuje do pliku logowanie.php to już wywala błąd:
Kod
Notice: Undefined variable: DB in E:\apache\htdocs\tac_by_wolfi\klasy\logowanie.php on line 56
Fatal error: Call to a member function select() on a non-object in E:\apache\htdocs\tac_by_wolfi\klasy\logowanie.php on line 56
Fatal error: Call to a member function select() on a non-object in E:\apache\htdocs\tac_by_wolfi\klasy\logowanie.php on line 56
pytanie brzmi: dlaczego tak się dzieje