Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]problem z konstruktorem
marcinp1984
post
Post #1





Grupa: Zarejestrowani
Postów: 112
Pomógł: 0
Dołączył: 17.05.2009

Ostrzeżenie: (0%)
-----


Witam

Mam fragment kody znaleziony w sieci, który próbuje przerobić po swojemu. Niestety póki co nic nie mogę zrobić bo ciągle wyrzuca mi jakieś errory :/
A więc mam takie coś:

  1. $dane['imie'] = 'xxx';
  2. $dane['nazwisko'] = 'yyy';
  3. $dane['id'] = '1';
  4. $dane['email'] = 'zzz';
  5.  
  6. class Lista
  7. {
  8. public function __construct($list=array())
  9. {
  10. foreach($list as $n->$v)
  11. $this->$n=$v;
  12. }
  13.  
  14. (...)
  15.  
  16. }
  17.  
  18. $new = new Lista($dane);
  19.  


I ciągle wywala się na 10 linij kodu:

Fatal error: Cannot access empty property in /home/marcinpm/domains/pawlak-marcin.pl/public_html/panel_aukcji/allegro.inc.php on line 10


Co właściwie oznacza ten zapis
  1. foreach($list as $n->$v)

Bo nigdzie na ten temat nie mogę nic znaleźć. Jedyne c znalazłem to coś w tym stylu
  1. foreach($list as $n=>$v)

Ale to chyba nie to samo (IMG:style_emoticons/default/biggrin.gif)

W czym tu może leżeć problem?
Go to the top of the page
+Quote Post
sada
post
Post #2





Grupa: Zarejestrowani
Postów: 302
Pomógł: 24
Dołączył: 6.12.2008

Ostrzeżenie: (0%)
-----



nie
  1. $this->$n=$v;


tylko tak
  1. $this->n=$v;
Go to the top of the page
+Quote Post
marcinp1984
post
Post #3





Grupa: Zarejestrowani
Postów: 112
Pomógł: 0
Dołączył: 17.05.2009

Ostrzeżenie: (0%)
-----


Ale ciągle się niestety zatrzymuje na tej 10 linijce :/
Go to the top of the page
+Quote Post
potreb
post
Post #4





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Zauważ jedno. Rozbijasz dane. Metoda taka:

  1. foreach($list as $n=>$v)
  2. $this->$n=$v;


Znajdzie zastosowanie, chodzi tutaj że do this przypisujesz nazwę pola (imie, nazwisko, id, email) poprzez rozbicie tablicy. Ja taką metodę stosuje u siebie, jest bardzo pomocna przy szybkim przetwarzaniu danych.

W ten sposób co przedstawił ci sada, this zostanie raz zainicjonowana i nie rozbije ci danych. Musiałbyś użyć takiej metody $this->n[$n];

Ten post edytował potreb 12.02.2011, 13:07:23
Go to the top of the page
+Quote Post
sada
post
Post #5





Grupa: Zarejestrowani
Postów: 302
Pomógł: 24
Dołączył: 6.12.2008

Ostrzeżenie: (0%)
-----


  1. foreach($list as $n=>$v)


Ten post edytował sada 12.02.2011, 12:42:13
Go to the top of the page
+Quote Post
marcinp1984
post
Post #6





Grupa: Zarejestrowani
Postów: 112
Pomógł: 0
Dołączył: 17.05.2009

Ostrzeżenie: (0%)
-----


hmmm... czyli teoretycznie można stwierdzić, że ten kod, który wkleiłem na początku powinien być w porządku?
Go to the top of the page
+Quote Post
potreb
post
Post #7





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Tak. I popraw foreach bo zrobiłeś byka $n->$v, powinno być $n=>$v, więc sada ci to wyłapał, ja nie odrazu
Go to the top of the page
+Quote Post
marcinp1984
post
Post #8





Grupa: Zarejestrowani
Postów: 112
Pomógł: 0
Dołączył: 17.05.2009

Ostrzeżenie: (0%)
-----


Aha... czyli jednak tu tkwił błąd (IMG:style_emoticons/default/smile.gif) Dzięki wielkie ja kombinuje dalej (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 16:19