Фатальная ошибка: неопределенная функция - почему? - PullRequest
1 голос
/ 19 июля 2009

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

Класс:

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

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

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

Ответы [ 2 ]

4 голосов
/ 19 июля 2009

Просто расширяю ответ 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"
4 голосов
/ 19 июля 2009

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

$this->handleConnections();

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

...