Использовать $ this-> при вызове функции (метода) в классе? - PullRequest
1 голос
/ 11 августа 2011

Есть ли способ кодифицировать следующее в PHP:

class myClass extends parentClass{
    function myFunction(){
        calculate();
    }
}

class parentClass{
    public function calculate(){

    }
}

Или всегда требуется $this->?

class myClass extends parentClass{
    function myFunction(){
        $this->calculate();
    }
}

Ответы [ 5 ]

3 голосов
/ 11 августа 2011

Вам нужно $this-> в функциях, определенных как методы класса.

Также вы можете использовать глобальные функции вне классов, им не нужно $this->

1 голос
/ 11 августа 2011
function myMethod() { echo "Outside Class Scope"; }

class A {
   function myMethod() { echo "Inside Class Scope"; }

   function what_to_call() {
       myMethod();
   }
}

Какую функцию должен выполнять PHP, когда он встречает myMethod() в методе what_to_call() класса A?

Также рассмотрим длинную цепочку наследования, где каждый предок имеет свой собственный myMethod().Какой метод должен вызывать PHP?Текущие объекты?Родители'?Бабушки и дедушки?

0 голосов
/ 11 августа 2011
$this-> my_function

Этот оператор предназначен для вызова функции в Class:)

0 голосов
/ 11 августа 2011

$this-> необходимо использовать, если вы ссылаетесь на метод (т. Е. На функцию, определенную внутри класса).calculate() сам по себе относится к функции вне класса (как и любая встроенная функция), что не является тем, что вам нужно.

0 голосов
/ 11 августа 2011

Вам нужно использовать это $ this-> при вызове метода

...