Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Объекты и наследование...
 
 автор: dim   (30.08.2005 в 22:52)   письмо автору
 
 

Подскажите, можно ли вызвать метод класса в самом классе с помощью конструкции 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!!!!!!

   
 
 автор: cheops   (31.08.2005 в 00:56)   письмо автору
 
   для: 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();
    }
  }
?>

   
 
 автор: isset   (31.08.2005 в 01:12)   письмо автору
 
   для: cheops   (31.08.2005 в 00:56)
 

А если потом мы решим переименовать класс, то надо будет исправлять не только название но и код....

Можно через self::m1(); обращаться , но это вроде только для PHP5, а в PHP4:

$this->m1();

   
 
 автор: lina   (31.08.2005 в 10:28)   письмо автору
 
   для: isset   (31.08.2005 в 01:12)
 

Не знаю у меня всегда нормально срабатывала команда $this->method(). Может ты имя метода не правильно пишешь или с параметрами что не так? ;-)

   
 
 автор: dim   (31.08.2005 в 17:13)   письмо автору
 
   для: 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: спасибо всем за приятный полилог!!!! По-видимому, тему можно закрывать!!! : )

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования