Фатальная ошибка: неопределенная функция - почему?

Я новичок в объектно-ориентированном программировании на PHP. Я включил класс и вызвал его, затем внутри конструктора этого класса я вызываю частную функцию с именем handleConnections. По какой-то причине это дает мне фатальную ошибку (неопределенная функция). Есть идеи, почему?

Класс:

class Test
{
   function __construct()
   {
      handleConnections();
   }

   private function handleConnections()
   {
      //do stuff
   }
}

Это кажется безупречным, и все же я получаю эту ошибку. Если кто-то знает, что может быть не так, пожалуйста, скажите мне. Спасибо!


person Tom    schedule 19.07.2009    source источник


Ответы (2)


Просто расширяю ответ FWH.

Когда вы создаете класс и назначаете его переменной, извне класса вы вызываете любую функцию внутри этого класса, используя $variable->function();. Но, поскольку вы находитесь внутри класса, вы не знаете, чему присваивается класс, поэтому вам нужно использовать ключевое слово $this-> для доступа к любым свойствам класса. Общее практическое правило: если вы хотите получить к нему доступ как $obj->var, обращайтесь к нему с помощью $this->.

class myClass
{
    function myFunc()
    {
        echo "Hi";
    }

    function myOtherFunc()
    {
        $this->myFunc();
    }

}


$obj = new myClass;

// You access myFunc() like this outside
$obj->myFunc();

// So Access it with $this-> on the inside
$obj->myOtherFunc();

// Both will echo "Hi"
person Tyler Carter    schedule 19.07.2009
comment
В правильных языках OO, таких как Java, изнутри класса вы можете вызывать его методы и поля без использования этого - person Ali; 19.07.2009
comment
Просто добавить, что это относится и к переменным, и это источник скрытых ошибок. - person Extrakun; 19.07.2009

Попробуйте с:

$this->handleConnections();

Если вы не добавляете к своим вызовам префикс $this, он пытается вызвать глобальную функцию. $this является обязательным в PHP, даже если двусмысленности быть не может.

person FWH    schedule 19.07.2009