• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Dlaczego w tym kodzie wyświtla mi błedy

Object Storage Arubacloud
0 głosów
126 wizyt
pytanie zadane 25 października 2015 w PHP przez Silverwind Użytkownik (730 p.)
<?php
 class  nazwaklasy
{
	public $atrybut;
	
}
$p1=new nazwaklasy();
$p1->$atrybut = "pies";
echo $p1->$atrybut;
?>

Wyrzacami Notice: Undefined variable: atrybut in

Fatal error: Cannot access empty property in

podałem przecież atrybut.

2 odpowiedzi

+1 głos
odpowiedź 25 października 2015 przez Dorion300 Szeryf (90,250 p.)
wybrane 25 października 2015 przez Silverwind
 
Najlepsza
<?php
class nazwaklasy
{
    public $atrybut;
}

$p1=new nazwaklasy();
$p1->atrybut = "pies";
echo $p1->atrybut;
?>

 

+3 głosów
odpowiedź 25 października 2015 przez furas Maniak (53,800 p.)

Powinno być bez $

$p1->atrybut = "pies";
echo $p1->atrybut;

Użycie $ oznacza: pobierz z `$pl` zawartość atrybutu, którego nazwa podana jest w lokalnej zmiennej `$atrybut`

komentarz 25 października 2015 przez Silverwind Użytkownik (730 p.)
Tego właśnie chyba nie rozumiem. Dlaczego ta zmienna jest bez dolara i jak jest różnica pomiędzy $atrybut a atrybut
komentarz 25 października 2015 przez furas Maniak (53,800 p.)

Tak sobie wymyślono, że dolar rozpoczyna osobną zmienną. Jeśli zrobisz 

$nazwa = 'kolor'

echo $p1->$nazwa

to będzie to równoważne z

echo $p1->kolor

W ten sposób można dynamicznie wybierać jaką wartość chcesz pobrać z klasy.
Może to być przydatne bo możesz w zmiennej $nazwa podać nazwę zależnie od wyboru użytkownika lub wczytać tą wartość z pliku lub bazy danych.

komentarz 25 października 2015 przez Silverwind Użytkownik (730 p.)
Czytałaś w ogóle o co mi chodzi. wiem że tak się deklaruje zmienne chodzi mi o różnice pomiędzy dostęp do niej  $p->$atrybut a

$p->atrybut
komentarz 25 października 2015 przez furas Maniak (53,800 p.)
edycja 25 października 2015 przez furas

Tak jak napisałe powyżej 

$p->atrybut;

Powyższe odwołuje się bezpośrednio do atrybutu o nazwie `atrybut` w obiekcie $p

$p->$atrybut;

Powyższe szuka zmiennej lokalnej o nazwie `$atrybut` i jej zawartość zostaje wykorzystana jako nazwa zmiennej pobieranej z obiektu $p. 

$atrybut = 'kolor'; // zmienna lokalna zawierająca nazwę atrybutu

$p->$atrybut; // rownowazne z $p->kolor

// --

$atrybut = 'atrybut'; // zmienna lokalna zawierająca nazwę atrybutu

$p->$atrybut; // rownowazne z $p->atrybut

 

komentarz 25 października 2015 przez Silverwind Użytkownik (730 p.)

Ja mam już mętlik w głowie :

1 kod

<?php
 class  nazwaklasy
{
	public $atrybut;
}
$p1=new nazwaklasy();

$p1->atrybut="pies";
echo $p1->atrybut;
?>

wypisze mi pies i jest wszystko oki

2 kod

<?php
 class  nazwaklasy
{
	public $atrybut;
}
$p1=new nazwaklasy();

$p1->$atrybut="pies";
echo $p1->$atrybut;
?>

wyrzucami błędy.Dlaczego zmienna jest bez dolara. .

 

komentarz 25 października 2015 przez furas Maniak (53,800 p.)
Twórcy języka wymyśli, że dolar jest sygnałem, że zaczyna się nazwa osobnej zmiennej.

Przy deklaracji zmiennej w klasie można użyć krótkiego zapisu ale już w metodach trzeba podać pełną nazwę dodając $this . A poza klasą trzeba dodac nazwę obiektu.

Możesz na to patrzyć jak na poniższe (choć nie jest to zapis, który zadziała)

${ atrybut } , ${ p1->atrybut }, ${ this->atrybut }

Podobne pytania

0 głosów
2 odpowiedzi 133 wizyt
pytanie zadane 5 listopada 2020 w C i C++ przez tonn204 Mądrala (7,440 p.)
0 głosów
3 odpowiedzi 1,750 wizyt
pytanie zadane 3 grudnia 2017 w PHP przez Krzysio4224 Obywatel (1,690 p.)
0 głosów
1 odpowiedź 161 wizyt

92,634 zapytań

141,505 odpowiedzi

319,883 komentarzy

62,015 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...