Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> private $_name 
:(
    Опции темы
supervladislav
Дата 18.4.2009, 23:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 18.5.2006

Репутация: -8
Всего: -9



существует код 
подскажите ,если к свойству используется метод инкапсуляции private 
то мне непонятно где нельзя его использовать ,ну по отноршению к чему,
К текущим функциям???
Почему  надо писать и в каких методах 
Код

return $this->_name


зачем это писать ,в каких методах?
что значит
Код

print "hello " {this->getName()!};

Код

ссылка на результат метода getname
<?php
class Demo{
private $_name;
public function sayHello(){ 
print "hello " {this->getName()!};
}
public function getname(){ 
print "hello " {this->getName()!};
return $this->_name;
}
public function setName($name){
if(!is_string($name) || strlean($name)==0){
throw new Exception("нельзя");
}
$htis->_name=$name;
}

}
?>



Это сообщение отредактировал(а) supervladislav - 18.4.2009, 23:22
PM MAIL   Вверх
bars80080
Дата 18.4.2009, 23:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(supervladislav @  18.4.2009,  23:07 Найти цитируемый пост)
Почему  надо писать и в каких методах 

по той же причине, по какой надо писать любую переменную. т.е. когда угодно

Цитата(supervladislav @  18.4.2009,  23:07 Найти цитируемый пост)
подскажите ,если к свойству используется метод инкапсуляции private 
то мне непонятно где нельзя его использовать ,ну по отноршению к чему,


это значит, что для:

Код

$myc = new Demo();

$myc->_name = ''; // - даст ошибку

т.к. свойство видно только изнутри класса
т.е. если внутри свойства написано $this->_name то проблем не будет


PM MAIL WWW   Вверх
supervladislav
Дата 19.4.2009, 00:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 18.5.2006

Репутация: -8
Всего: -9



я имел ввиду ,я несовсем понимаю )))как правильно использовать свойства почему 
Код

<?php
class Demo{


 publick $name;
function sayhello(){
print "hello $this->name!";
}
}
?>


зачем нужно 
Код

$this->name!";

а можно сразу определить переменную $name ,тоесть задать ей значение???
А  если методов и свойств много ???
почему для вызова методов и свойств используется один и тотже лексикон 
Код

<?php
require_once("class.Demo.php");
$obDemo=new Demo();
$objdemo->name=''dsdsd';
$objanotherdemo=new Demo();
$objanotherdemo->name='ed';
$objDemo->sayHello();
$objanotherdemo->sayhello();



?>

непонимаю в чём раздница в выше приведённом коде


PM MAIL   Вверх
bars80080
Дата 19.4.2009, 00:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(supervladislav @  19.4.2009,  00:01 Найти цитируемый пост)
а можно сразу определить переменную $name ,тоесть задать ей значение???

дык, а какая у тебя задача? почему ты не задаёшь ей значение сразу?

Код

require_once("class.Demo.php");
$obDemo=new Demo();
$objdemo->name='dsdsd';
$objanotherdemo=new Demo();
$objanotherdemo->name='ed';
$objDemo->sayHello();
$objanotherdemo->sayhello();

во-первых, надобно бы пользовать тот код который пишешь, а не переспрашивать на форуме. неужели наблюдая за разным поведением не сможешь сделать выводов?
для приведённого класса понятное дело они одинаковы, коль поставил public для свойства. но спрашивал изначально про private. зачем за нос водишь?
PM MAIL WWW   Вверх
pizzz
Дата 19.4.2009, 07:48 (ссылка) |   (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 238
Регистрация: 14.12.2008
Где: Омск

Репутация: 6
Всего: 8



Зачем нужно $this-> ?

Ну вот представьте у Вас 1 класс, и 3 обьекта этого класса. И у каждого обьекта определано свое свойство name. 

Подумайте, почему названно ОБЕКТНО-ОРЕНТИРОВАННОЕ-ПРОГРАММИРОВАНИЕ а не КЛАССО-ОРЕНТИРОВАННОЕ-ПРОГРАММИРОВАНИЕ

Добавлено через 5 минут и 15 секунд
class Demo {
     public name;
     __construct ($a) {
         $this->name=$a;
    }

}

Создавая обьект в классе можно указать код, который будет выполнен при создание обьекта. 
То есть 

$a = new Demo("ПРивет мир!!!");
$b = new Demo("Пока мир!!!");

echo $a->name;
echo $b->name;

Выведет:
ПРивет мир!!!
Пока мир!!!

Добавлено через 7 минут и 51 секунду
P.s. Задавайте вопросы четче. Будете получать ответы получше smile
--------------------
Спасибо много, жмем кнопку репутация.  Извините меня за орфографические ошибки, я стараюсь не ошибаться, а они все равно просачиваются гады.     
PM MAIL ICQ   Вверх
supervladislav
Дата 19.4.2009, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 18.5.2006

Репутация: -8
Всего: -9



зачем обязательно возвращать значение свойств в метод ,у меня во всех примерах так ))))
можно значения свойств вызвать без возврата в метод ,и можно ли определить сразу в классе значения свойств 
PM MAIL   Вверх
pizzz
Дата 19.4.2009, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 238
Регистрация: 14.12.2008
Где: Омск

Репутация: 6
Всего: 8



Если честно нифига не понятно. Хотите чтобы Вам помогли? Задавайте вопросы правильно. 

Да в классе можно определить значения
--------------------
Спасибо много, жмем кнопку репутация.  Извините меня за орфографические ошибки, я стараюсь не ошибаться, а они все равно просачиваются гады.     
PM MAIL ICQ   Вверх
supervladislav
Дата 19.4.2009, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 18.5.2006

Репутация: -8
Всего: -9



Сейчас попробую.Скажите можно свойство вызвать без вот этого
Код

$this->name!";

обязательно значения свойств возвращать в метод ,можно свойство вызвать без этого
PM MAIL   Вверх
bars80080
Дата 19.4.2009, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(supervladislav @  19.4.2009,  14:16 Найти цитируемый пост)
!"

что это за хрень? и почему у вас не пишется ошибка в этом коде?


Цитата(supervladislav @  19.4.2009,  14:16 Найти цитируемый пост)
обязательно значения свойств возвращать в метод ,можно свойство вызвать без этого 

да не нужно ничего делать. делайте что хотите. хотите чтобы свойство было доступно вне класса, делайте его public, не хотите - делайте private. если оно public, то значение свойства вы можете установить без всяких методов, просто присвоив ему значение:

Код

$myc = new MyClass();
$myc->name = 'slon';


всё. какие тут непонятки?

Это сообщение отредактировал(а) bars80080 - 19.4.2009, 21:19
PM MAIL WWW   Вверх
supervladislav
Дата 19.4.2009, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 18.5.2006

Репутация: -8
Всего: -9



ясно )))А ещё обязательно задавать методы инкапсуляции для методов ,в каком случае это нужно )))
если класс будет  public То и всё внутри него тоже будет public или нет?

Добавлено через 36 секунд
у меня так напсиано в книге 
PM MAIL   Вверх
Kirsan
Дата 19.4.2009, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 4.11.2008
Где: г.Волжский, Волго градская обл.

Репутация: 1
Всего: 1



Класс есть класс, он не Private и не Public.
Инкапсуляция нужна для того, чтобы максимально абстрагировать класс, оставляя доступным только интерфейс и пряча внутрь все вспомогательные методы и свойства.
Почитайте литературу по ООП. Там это всё объясняется. Начиная с того, что ООП - это не какая-то непонятная фича PHP, а парадигма программирования.
PM ICQ   Вверх
bars80080
Дата 20.4.2009, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(supervladislav @  19.4.2009,  22:54 Найти цитируемый пост)
 задавать методы инкапсуляции для методов 

ничего не понял.... методы для методов?


Цитата(supervladislav @  19.4.2009,  22:54 Найти цитируемый пост)
если класс будет  public 

а где это вы видели, чтобы целому классу назначалось private или public? только методам и свойствам внутри класса
PM MAIL WWW   Вверх
supervladislav
Дата 20.4.2009, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 18.5.2006

Репутация: -8
Всего: -9



Я читал ,что такое ооп))))я  не очень понимаю  как работают методы инкапсуляции)))
если функция  имеет метод public  к нему  можно будет обратиться из любой части кода так ,а если он будет он private  то только в пределах этого класса 
тоесть это как вы могли бы дать пример пожалуйста.
   
PM MAIL   Вверх
pizzz
Дата 20.4.2009, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 238
Регистрация: 14.12.2008
Где: Омск

Репутация: 6
Всего: 8



class Demo () {
   private $pr;
   public   $pu;
}


$obj = new Demo ();

echo $obj->pr; // Вернет ошибку.
echo $obj->pu; // выведеться нормально
--------------------
Спасибо много, жмем кнопку репутация.  Извините меня за орфографические ошибки, я стараюсь не ошибаться, а они все равно просачиваются гады.     
PM MAIL ICQ   Вверх
IZ@TOP
Дата 21.4.2009, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Почему-то, у меня стойкое ощущение, что данный топик скорее относится к фундаментальным основам ООП, а не профессиональной разработке на PHP.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0614 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.