как обращаться к методам класса внутри класса?

Духовность™

Продвинутый новичок
как обращаться к методам класса внутри класса?

Помогите, туплю.

PHP:
class a
{
    function doit()
    {
        echo 'a called';
    }
    
    function run()
    {
        // self::doit();
        // $this->doit();
    }
}

$a = new a();
$a->run();
как правильно в методе run() вызывать doit()? Есть ли разница между self и this?
 

Духовность™

Продвинутый новичок
а почему же это тогда работает и никаких ошибок не выдает?

-~{}~ 26.10.09 09:29:

а в случае наследования класса "a", parent::doit() будет правильно, или тоже лучше this?
 

zerkms

TDD infected
Команда форума
тоже $this
parent только тогда, когда имя у метода совпадает и ты хочешь уточнить, что метод не текущего класса, а предка.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
поиграй с
PHP:
class a 
{ public $a = 'a called';
    function doit() 
    { 
        echo $this->a; 
    } 
     
    function run() 
    { 
         self::doit(); 
         $this->doit(); 
    } 
}
 

alexv

Новичок
$this - указатель на объект класса
self указывает на сам класс
 

alexv

Новичок
не так игрался ;)
Код:
class a 
{ 
	public static $a = 'a called';
    function doit() 
    { 
        echo $this->a; 
    } 
     
    function run() 
    { 
         self::doit(); 
         $this->doit(); 
    } 
}

$obj1= new a;
$obj2= new a;
$obj1->a="obj1 called?";

$obj1->run();
$obj2->run();
 

A1x

Новичок
разница между вызовами :: и -> в способе установки $this в вызываемом методе.
При вызове через -> $this устанавливается ссылкой на вызывающий объект.
При вызове через :: $this берется из текущей области видимости

Поэтому если в методе есть $this вызывать его через :: нежелательно (исключение - parent::)
 
Сверху