Код (PHP): <?php require 'INewsDB.class.php'; class NewsDB implements INewsDB { private $_db; const DB_NAME = '/home/petrov/public_html/mysite/news.db'; function __construct() { if (is_file(self::DB_NAME)) { $this->_db = new SQLite3(self::DB_NAME); } else { $this->_db->open(self::DB_NAME); $sql = "CREATE TABLE msgs(id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT, category INTEGER, description TEXT, source TEXT, datetime INTEGER)"; $this->_db->exec($sql) or die($this->_db->lastErrorMsg()); $sql = "CREATE TABLE category(id INTEGER,name TEXT)"; $this->_db->exec($sql) or die($this->_db->lastErrorMsg()); $sql = "INSERT INTO category(id, name) SELECT 1 as id, 'Политика' as name UNION SELECT 2 as id, 'Культура' as name UNION SELECT 3 as id, 'Спорт' as name"; } } function __destruct() { unset($this->_db); } function clearStr($data){ $data = trim(strip_tags($data)); return $this->_db->escapeString($data); } function clearInt($data){ return abs((int)$data); } function saveNews($t, $c, $d, $s) { // $dt = time(); // $sql = "INSERT INTO msgs(title,category, description, source, datetime) // VALUES('$t','$c','$d','$s','$dt')"; // $this->_db->exec($sql) or die($this->_db->lastErrorMsg()); $dt = time(); $sql = "INSERT INTO msgs(title,category, description, source, datetime) VALUES('$t','$c','$d','$s','$dt')"; $stmt = $this->_db->prepare($sql); $stmt->execute(); $stmt->close(); $this->_db->exec($sql) or die($this->_db->lastErrorMsg()); } function getNews() { } function deleteNews($id) { } } //$news = new NewsDB; ?> Написав переход с подготовленным запросом непонял почему обращение к _db(ссылке на открытую базу) идет без $ и почему обращение только через $this. что такое this я знаю.Вроде суть в том, что я ссылаюсь в этой области видимости на db но все же помогите разобраться
Потому что к свойстам и методам объекта обращение идет без $, через $object->lalala. Дело не в области видимости, а в контексте выполнения.