[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вызов функций
Jek
Что это означает? Почему функцию вызывают вот так.
1
$this->private_foo();


или

2
$this->x = 3;




Спустя 11 минут, 12 секунд (21.04.2011 - 08:21) kirik написал(а):
Первое это вызов собственного метода внутри некого класса, второе - назначение собственной переменной внутри некого класса.

class foo {
private $x = 0;
private function _show() {
echo $this->x;
}
public function set($i) {
$this->x = $i;
}
public function show() {
$this->_show();
}
}


$foo_class = new foo;

$foo_class->show(); // 0
$foo_class->_show(); // Ошибка - вызов приватного метода

$foo_class->set(2);
$foo_class->show(); // 2

$foo_class->x = 2; // Ошибка - доступ к приватному свойству

Спустя 23 минуты, 45 секунд (21.04.2011 - 08:44) Jek написал(а):
1. $this - это зарезервированное слово?
2. В данном случае, x - это переменная, 3 - это значение?

$this->x = 3;

Спустя 4 минуты, 22 секунды (21.04.2011 - 08:49) kirik написал(а):
1 - да
2 - так точно. Как в обычных переменных ($x = 3), только тут словом $this указывается отношение этой переменной к классу, в котором она используется.

Спустя 2 минуты, 35 секунд (21.04.2011 - 08:51) Jek написал(а):
kirik, пример очень понятный. Спасибо. Если не секрет, где вы его взяли?

Спустя 12 минут, 22 секунды (21.04.2011 - 09:04) kirik написал(а):
Цитата (Jek @ 21.04.2011 - 01:51)
Если не секрет, где вы его взяли?

Не поверите... rolleyes.gif

Спустя 4 минуты, 54 секунды (21.04.2011 - 09:09) Jek написал(а):
Если сами сочинили, то очень даже хорошо для начинающих)))

Спустя 27 минут, 44 секунды (21.04.2011 - 09:36) linker написал(а):
kirik
Ты у нас начинающий оказывается smile.gif Только одно замечание
Цитата
только тут словом $this указывается отношение этой переменной к классу
нужно слово "класс" заменить на "объект".

Спустя 28 минут, 45 секунд (21.04.2011 - 10:05) kirik написал(а):
Цитата (linker @ 21.04.2011 - 02:36)
нужно слово "класс" заменить на "объект".

Да, кстати, меткое замечание. Дабы прояснить отличие класса и объекта (инстанции) класса:
если создать два "объекта из одного класса":
$foo_class1 = new foo;
$foo_class2 = new foo;

то изменения в одном из них никак не будут сказываться на другом:
$foo_class1->set(2);
$foo_class2->show(); // 0 - по умолчанию


Цитата (linker @ 21.04.2011 - 02:36)
Ты у нас начинающий оказывается

В какой-то степени это даже правда :)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.