|
|
|
| Есть ли возможность создать переменную внутри класса, изменять которую можно только внутри класса (объекта)? | |
|
|
|
|
|
|
|
для: angelcorpc
(27.03.2010 в 21:18)
| | Зовутся они членами.
А чтобы сделать закрытым - спецификатор доступа выставить private.
Вот только это ведь саамые-самые основы ООП..
И да..что за примечание в скобках? При private изменять значение члена можно будет только через методы этого самого класса. А так
$obj = new foo;
$obj->someVar = '12';
, где someVar - закрытый член класса, уже не прокатит. | |
|
|
|
|
|
|
|
для: neadekvat
(27.03.2010 в 21:24)
| | Возможно я не правильно объяснил.
Есть класс, в нем есть метод и есть несколько переменных.
При обращении к этому методу переменным этого класса (точнее объекта созданного из этого класса) присваивались некие значения и эти переменные были доступны и вне класса, но только для чтения.
Т.е. внутри класса они read-write, а вне этого класса, read only. | |
|
|
|
|
автор: Тень* (27.03.2010 в 22:11) |
|
|
для: angelcorpc
(27.03.2010 в 21:38)
| | Через __set()/__get() | |
|
|
|
|
автор: Тень* (27.03.2010 в 22:13) |
|
|
для: Тень*
(27.03.2010 в 22:11)
| | Нет, туплю. Нормально там тоже не выйдет. Придётся дополнительно два метода внутри добавлять. | |
|
|
|
|
|
|
|
для: angelcorpc
(27.03.2010 в 21:38)
| | Это же совершенно меняет дело =)
Насколько я знаю ООП, такого спецификатора доступа нет.
Поэтому и используют для чтения и записи методы класса, объявляя члены закрытыми:
<?php
class foo {
private $someVar;
public function set($value)
{
$this->someVar = $value;
return true;
}
public function get()
{
return $this->someVar
}
}
|
естессно, для каждого члена не будешь писать свои два метода..так что передавать можно еще по одному аргументу - имена членов.
Ну и про методы __set() и __get() почитайте =) | |
|
|
|
|
|
|
|
для: neadekvat
(27.03.2010 в 22:12)
| | Ок, спасибо большое:) | |
|
|
|