Автор Тема: Вызов методов из функций  (Прочитано 3273 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Nicki

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 107
  • +0/-0
  • 0
    • Просмотр профиля
    • http://cprazdnikom.ru
Вызов методов из функций
« : 29 Января 2004, 19:18:12 »
Попробовал из функции, вызвать метод определенный в одном из классов - не получилось.
Функция, из которой был вызов метода класса, определена в "главной" области видимости (не в классе и не в другой функции). Т.е. получается, что нельзя вызывать методы из функций, а только из главной области видимости, так? Или я что-то прогнал?
Поздравления с днем Святого Валентина

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Вызов методов из функций
« Ответ #1 : 29 Января 2004, 19:26:23 »
Nicki
ты вызываешь функцию класса или метод объекта ?
Пример N1:

class aaaa {
   function 
bbb () { echo "be be be";}
}

function 
test() {
   
aaaa::bbb();
}

test();  // функция класса нормально вызывается


Пример 2
class aaaa {
   function 
bbb () { echo "be be be";}
}
function 
test() {
   
$a->bbb();
}
$a = new aaaa();
test(); // ошибка


все дело в том, что объекты, тоже являются переменными. Поэтому если вызываешь их из функций, то надо либо global использовать либо в качестве параметра передавать:

class aaaa {
   function 
bbb () { echo "be be be";}
}
function 
test() {
   global 
$a;
   
$a->bbb();
}
$a = new aaaa();
test();

или так:

class aaaa {
   function 
bbb () { echo "be be be";}
}
function 
test($a) {
   
$a->bbb();
}
$a = new aaaa();
test($a);
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн CGVictor

  • теперь местный
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2511
  • +0/-0
  • 2
    • Просмотр профиля
    • http://cg.net.ru
Вызов методов из функций
« Ответ #2 : 29 Января 2004, 19:27:48 »
Конечно, прогнал. Хочешь ответа - пиши яснее и подробнее.
Скорее всего - ошибка "замыленного глаза".
LJ: Backslashed life (rss)

Оффлайн Nicki

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 107
  • +0/-0
  • 0
    • Просмотр профиля
    • http://cprazdnikom.ru
Вызов методов из функций
« Ответ #3 : 29 Января 2004, 20:52:19 »
Насколько я помню, функции определенные в классах называются методами. Может и ошибаюсь. Я хотел таким способом сделать:

class aaa {
   function bbb() {
       echo "be be be";
   }
}

function ccc() {
   $a->bbb(); // вызыываю метод bbb() из функции ccc(), а сам метод определен в классе aaa
}

$a = new aaa;
Поздравления с днем Святого Валентина

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Вызов методов из функций
« Ответ #4 : 29 Января 2004, 21:18:10 »
Nicki
Ты смешной какой.

а $a - это что, по-твоему?
ну вот напиши - что такое $a?
и должно ли быть оно видно в области видимости функции. ась?

Оффлайн Nicki

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 107
  • +0/-0
  • 0
    • Просмотр профиля
    • http://cprazdnikom.ru
Вызов методов из функций
« Ответ #5 : 29 Января 2004, 21:37:28 »
Цитировать
RomikChef:
и должно ли быть оно видно в области видимости функции. ась?


$a это экземпляр класса, а вот должно оно быть видно ли нет, этого я не знаю, поэтому и пришел на форум.
Поздравления с днем Святого Валентина

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Вызов методов из функций
« Ответ #6 : 29 Января 2004, 21:43:16 »
что касается видимости объектов, то тут все так-же как и с обычными переменными
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Вызов методов из функций
« Ответ #7 : 29 Января 2004, 21:59:54 »
Nicki, запомни.
экземпляр класса - называется объектом.
А объект - это переменная.

Это знание тебе сильно поможет.

Да, и это касается не только объектов.
$array[\'item\'] - это не только "элемент массива", но, как ты, наверное, уже догадался - тоже пернеменная.

Оффлайн Nicki

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 107
  • +0/-0
  • 0
    • Просмотр профиля
    • http://cprazdnikom.ru
Вызов методов из функций
« Ответ #8 : 30 Января 2004, 11:36:03 »
RomikChef , пасиба большое! И Максу тоже, огромное!
Поздравления с днем Святого Валентина

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28