Автор Тема: от урока __construct  (Прочетена 568 пъти)

0 Потребители и 1 Гост преглежда(т) тази тема.

Raicho

  • Гост
от урока __construct
« -: 01 Ноември 2011, 14:40:55 »
Код: PHP
  1. <?php
  2.  class Pruv {
  3. private $username = '';
  4.  
  5. public function __construct($user)
  6. {
  7. $this->username = $user;
  8. $this->User();
  9. }
  10. public function User(){
  11. echo ("Hello: ".$this->username);
  12.         }
  13. }
  14. $nov = new Pruv('Raio');
  15. ?>
  16.  
Горе долу разбрах за какво говори Иван само едно не ми стана ясно.
как хваща името $nov = new Pruv('Raio');
Не разбирам този точно това.Като дефинирам $nov = new Pruv('Raio'); го използвам за да мога от самия клас да извиквам function а как самия клас казва кое име да хване ?  ???
Демек как това се връзва $nov = new Pruv('Raio'); с $username ?

Светльо

  • Full Member
  • ***
  • Благодарности
  • -Казани: 5
  • -Получени: 1
  • Публикации: 154
Re: от урока __construct
« Отговор #1 -: 01 Ноември 2011, 14:49:28 »
Нали когато правиш това: $nov = new Pruv('Raio'); предаваш аргумент 'Raio' ... този аргумент се предава на конструктура: public function __construct($user) и така класа разбира за кое име става на въпрос.
Т.е. аргумента който предаваш при инстанцирането на класа е този, който конструктура приема.
Пробвай да му зададеш 2 задължителни аргумента на конструктура и не променяй кода, който ти прави инстанция и виж каква грешка ти дава ...
Аз по този начин разбрах въпроса ти ...

MrCroZer

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 11
  • -Получени: 17
  • Публикации: 410
Re: от урока __construct
« Отговор #2 -: 01 Ноември 2011, 15:13:19 »
Това е принципа на setters и getters.Но тук setter ти е конструктора, a за getter може да приемеш функцията User.

Така.

private $username = ''; // създава променлива

public function __construct($user)
{
$this->username = $user;
$this->User();
}

Тъй като конструктора се зарежда пръв, то променливата $username взима стойността който подаваш  от тук $nov = new Pruv('Raio'); , в твоят случай Raio. След това се стартира функцията User $this->User();. Тук тъй като си сменил стойността на $username то когато се ползва echo ("Hello: ".$this->username); ще ти изведе променената стойност на $username, в твоят случай Hello: Raio

Raicho

  • Гост
Re: от урока __construct
« Отговор #3 -: 01 Ноември 2011, 15:31:09 »
Мерси и на 2-ма ви CroZer много добро обяснение :)   :P

antigoogle

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 6
  • -Получени: 5
  • Публикации: 273
Re: от урока __construct
« Отговор #4 -: 01 Ноември 2011, 19:12:18 »
Като направиш инстанцията ти се стартира винаги първо конструктора, който има един аргумент и ако не го дадеш на конструктора при инстанцията щи даде грешка.На първия ред привейт свойството "юсернейм" взема стойността на аргумента на конструктора, а на втория се изпълнява метода дефиниран по-долу "Юсер" при който е изписва "здравей + привейт свойството", демек аргумента, който си дал.Смисъла е, че няма как да извикаш привейт свойството директно:
$nov->username;
Трябва да го направиш публик за да го извикаш така.А аргумента можеш предварително да го зададеш да ти бъде по подразбиране:
class Pruv {
private $username = '';
 
public function __construct($user = "fgfdgdfg")
{
$this->username = $user;
$this->User();
}
public function User(){
echo ("Hello: ".$this->username);
        }
}
$nov = new Pruv();
Кажи му дизайнер и не го обиждай повече !