За последние 24 часа нас посетили 32987 программистов и 1756 роботов. Сейчас ищут 839 программистов ...

Подключение(объект) не видно в объект::функции

Тема в разделе "PHP для новичков", создана пользователем php_user, 3 июл 2014.

  1. php_user

    php_user Новичок

    С нами с:
    19 апр 2014
    Сообщения:
    91
    Симпатии:
    0
    Код (PHP):
    1. $db = new mysqli("localhost", "user","password,"dbase");
    2. $a="То что написал user";
    3.  
    4. class Checker 
    5. {
    6. private function checkString($variable)
    7.     {
    8.         $variable = $db->real_escape_string($variable);
    9.         return $variable;
    10.     }
    11. }
    12. echo Checker::checkString($a)
    Ошибка Fatal error: Call to a member function real_escape_string() on a non-object in /www/function.php on line 6015
    Как исправить $db->real_escape_string

    Добавлено спустя 12 минут 36 секунд:
    Нашел ответ сам. Оптимально?
    Код (PHP):
    1.     $db = new mysqli("localhost", "user","password,"dbase");
    2.     $a="То что написал user";
    3.  
    4.     class Checker 
    5.     {
    6.     private function checkString($variable)
    7.         {
    8.             [b]global $db;[/b]//<---
    9.             $variable = $db->real_escape_string($variable);
    10.             return $variable;
    11.         }
    12.     }
    13.     echo Checker::checkString($a)
     
  2. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Всё не так )
    1. Нельзя вызывать так метод не объявленный как static
    2. Нельзя вообще вызывать извне приватные методы. Они приватны.
    3. Что бы увидеть один объект внутри другого, нужно его передать.
    4. global тоже нельзя )
    http://php.ru/manual/language.oop5.html

    з.ы. но стремление похвально. Прочтите доки и все станет понятно.
     
  3. php_user

    php_user Новичок

    С нами с:
    19 апр 2014
    Сообщения:
    91
    Симпатии:
    0
    Признаюсь- код обрезан- там есть промежуточный метод вызывающий метод который я привел.
    Мануал- читаю, но все сразу не схватишь
    1. В оригинале объявлено нормально- неправильно обрезал для форума
    2. Скорее всего тоже самое
    3,4. А как?
    Так что ли (вылгядит неочень)
    Код (PHP):
    1.     
    2.     $db = new mysqli("localhost", "user","password,"dbase");
    3.     $a="То что написал user";
    4.  
    5.     class Checker extends mysqli //<--
    6.     {
    7.     private function checkString($variable)
    8.         {
    9.             $variable = $db->real_escape_string($variable);
    10.             return $variable;
    11.         }
    12.     }
    13.     echo Checker::checkString($a)
     
  4. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.817
    Симпатии:
    1.333
    Адрес:
    Лень