Forum Webscript.Ru
Программирование => PHP => Тема начата: Nicki от 29 Января 2004, 19:18:12
-
Попробовал из функции, вызвать метод определенный в одном из классов - не получилось.
Функция, из которой был вызов метода класса, определена в "главной" области видимости (не в классе и не в другой функции). Т.е. получается, что нельзя вызывать методы из функций, а только из главной области видимости, так? Или я что-то прогнал?
-
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);
-
Конечно, прогнал. Хочешь ответа - пиши яснее и подробнее.
Скорее всего - ошибка "замыленного глаза".
-
Насколько я помню, функции определенные в классах называются методами. Может и ошибаюсь. Я хотел таким способом сделать:
class aaa {
function bbb() {
echo "be be be";
}
}
function ccc() {
$a->bbb(); // вызыываю метод bbb() из функции ccc(), а сам метод определен в классе aaa
}
$a = new aaa;
-
Nicki
Ты смешной какой.
а $a - это что, по-твоему?
ну вот напиши - что такое $a?
и должно ли быть оно видно в области видимости функции. ась?
-
RomikChef:
и должно ли быть оно видно в области видимости функции. ась?
$a это экземпляр класса, а вот должно оно быть видно ли нет, этого я не знаю, поэтому и пришел на форум.
-
что касается видимости объектов, то тут все так-же как и с обычными переменными
-
Nicki, запомни.
экземпляр класса - называется объектом.
А объект - это переменная.
Это знание тебе сильно поможет.
Да, и это касается не только объектов.
$array[\'item\'] - это не только "элемент массива", но, как ты, наверное, уже догадался - тоже пернеменная.
-
RomikChef , пасиба большое! И Максу тоже, огромное!