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

Форум PHP

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

 

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

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

тема: Переменные класса
 
 автор: angelcorpc   (27.03.2010 в 21:18)   письмо автору
 
 

Есть ли возможность создать переменную внутри класса, изменять которую можно только внутри класса (объекта)?

  Ответить  
 
 автор: neadekvat   (27.03.2010 в 21:24)   письмо автору
 
   для: angelcorpc   (27.03.2010 в 21:18)
 

Зовутся они членами.
А чтобы сделать закрытым - спецификатор доступа выставить private.
Вот только это ведь саамые-самые основы ООП..
И да..что за примечание в скобках? При private изменять значение члена можно будет только через методы этого самого класса. А так
$obj = new foo;
$obj->someVar = '12';
, где someVar - закрытый член класса, уже не прокатит.

  Ответить  
 
 автор: angelcorpc   (27.03.2010 в 21:38)   письмо автору
 
   для: 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)
 

Нет, туплю. Нормально там тоже не выйдет. Придётся дополнительно два метода внутри добавлять.

  Ответить  
 
 автор: neadekvat   (27.03.2010 в 22:12)   письмо автору
 
   для: 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() почитайте =)

  Ответить  
 
 автор: angelcorpc   (27.03.2010 в 22:23)   письмо автору
 
   для: neadekvat   (27.03.2010 в 22:12)
 

Ок, спасибо большое:)

  Ответить  
Rambler's Top100
вверх

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