|
|
|
| Подскажите, можно ли вызвать метод класса в самом классе с помощью конструкции this->method(). И если можно, то как это правильно сделать? (Да и вообще как вызывать методы для класса, содержащего эти методы, обходя конструкцию name_class::method_name())
К примеру,
class base
{ function m1()
{echo "method1<br>";}
function m2()
{echo "method2<br>";
this->m1();}
}
Результат - Parse error: syntax error, unexpected T_OBJECT_OPERATOR in 'url' on line 'x'
thanks!!!!!! | |
|
|
|
|
|
|
|
для: dim
(30.08.2005 в 22:52)
| | А почему не хотите воспользоваться name_class::method_name?
<?php
class base
{
function m1()
{
echo "method1<br>";
}
function m2()
{
echo "method2<br>";
base::m1();
}
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(31.08.2005 в 00:56)
| | А если потом мы решим переименовать класс, то надо будет исправлять не только название но и код....
Можно через self::m1(); обращаться , но это вроде только для PHP5, а в PHP4:
$this->m1(); | |
|
|
|
|
|
|
|
для: isset
(31.08.2005 в 01:12)
| | Не знаю у меня всегда нормально срабатывала команда $this->method(). Может ты имя метода не правильно пишешь или с параметрами что не так? ;-) | |
|
|
|
|
|
|
|
для: lina
(31.08.2005 в 10:28)
| | isset, согласен с вами: self удобнее, если возможен случай изменения названия класса. С self-ом все работает, правда 'корневой' вопрос у меня следующий (по крайней мере теперь был!!!) : ... скажем так ...легче его изобразить в виде скрипта:
<?
class base
{ function m1()
{echo "it is method1 of class base<br>";}
function m2()
{echo "it is method2 of class base<br>";
self::m1();}
}
class inh extends base
{function m1()
{echo "it is method2 of class inh<br>";}
}
$new_ = new inh;
$new_->m2();
?>
если кому интересно - выводятся 2 строчки :
it is method2 of class base
it is method1 of class base
lina ; ) , а может ты программируешь на php4, а не 5 (сам не знаю - основываюсь на ответе isset)? А имена методов такие, какие приведены в данном скрипте; серьезно, я имя метода m1() врядли смог бы спутать в таком скрипте!!! ;-)
ps: спасибо всем за приятный полилог!!!! По-видимому, тему можно закрывать!!! : ) | |
|
|
|