За последние 24 часа нас посетили 62320 программистов и 1772 робота. Сейчас ищут 934 программиста ...

На что ссылкаеться this в этом примере и почему без $

Тема в разделе "Прочие вопросы по PHP", создана пользователем msim_real, 9 апр 2015.

  1. msim_real

    msim_real Новичок

    С нами с:
    9 апр 2015
    Сообщения:
    1
    Симпатии:
    0
    Код (PHP):
    1. <?php
    2. require 'INewsDB.class.php';
    3. class NewsDB implements INewsDB
    4. {
    5.     private $_db;
    6.  
    7.     const DB_NAME = '/home/petrov/public_html/mysite/news.db';
    8.  
    9.     function __construct()
    10.     {
    11.         if (is_file(self::DB_NAME)) {
    12.             $this->_db = new SQLite3(self::DB_NAME);
    13.         } else {
    14.             $this->_db->open(self::DB_NAME);
    15.             $sql = "CREATE TABLE msgs(id INTEGER PRIMARY KEY AUTOINCREMENT,
    16.                     title TEXT,
    17.                     category INTEGER,
    18.                     description TEXT,
    19.                     source TEXT,
    20.                     datetime INTEGER)";
    21.             $this->_db->exec($sql) or die($this->_db->lastErrorMsg());
    22.             $sql = "CREATE TABLE category(id INTEGER,name TEXT)";
    23.             $this->_db->exec($sql) or die($this->_db->lastErrorMsg());
    24.             $sql = "INSERT INTO category(id, name)
    25.                     SELECT 1 as id, 'Политика' as name
    26.                     UNION SELECT 2 as id, 'Культура' as name
    27.                     UNION SELECT 3 as id, 'Спорт' as name";
    28.            
    29.         }
    30.     }
    31.  
    32.     function __destruct()
    33.     {
    34.         unset($this->_db);
    35.     }
    36.  
    37.     function clearStr($data){
    38.         $data = trim(strip_tags($data));
    39.         return $this->_db->escapeString($data);
    40.     }
    41.     function clearInt($data){
    42.         return abs((int)$data);
    43.     }
    44.  
    45.  
    46.     function saveNews($t, $c, $d, $s)
    47.     {
    48. //        $dt = time();
    49. //        $sql = "INSERT INTO msgs(title,category, description, source, datetime)
    50. //        VALUES('$t','$c','$d','$s','$dt')";
    51. //        $this->_db->exec($sql) or die($this->_db->lastErrorMsg());
    52.  
    53.         $dt = time();
    54.         $sql = "INSERT INTO msgs(title,category, description, source, datetime)
    55.         VALUES('$t','$c','$d','$s','$dt')";
    56.         $stmt = $this->_db->prepare($sql);
    57.         $stmt->execute();
    58.         $stmt->close();
    59.        $this->_db->exec($sql) or die($this->_db->lastErrorMsg());
    60.     }
    61.  
    62.     function getNews()
    63.     {
    64.     }
    65.  
    66.     function deleteNews($id)
    67.     {
    68.     }
    69. }
    70.  
    71. //$news = new NewsDB;
    72. ?>
    Написав переход с подготовленным запросом непонял почему обращение к _db(ссылке на открытую базу) идет без $ и почему обращение только через $this. что такое this я знаю.Вроде суть в том, что я ссылаюсь в этой области видимости на db но все же помогите разобраться
     
  2. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Потому что к свойстам и методам объекта обращение идет без $, через $object->lalala.
    Дело не в области видимости, а в контексте выполнения.