Portál AbcLinuxu, 12. května 2025 05:54

Dotaz: Oprava kódu array a class v php

5.5.2014 19:20 Já
Oprava kódu array a class v php
Přečteno: 249×
Odpovědět | Admin
Zdravím, poraďte prosím jak plnit pole z více tříd.

Mám pole:
$zelenina = array();
třída s metodou která naplní pole Nevím zda je to tak dobře
public function setVars() {
   $zelenina = array();
   $zelenina['sazenice'] = array();
   $zelenina['sazenice'][] = 'foo';
   $zelenina['sazenice'][] = 'bar';
}
třída s metodou která pole vrací.
public function getVars() {
  return $zelenina['sazenice'];
}
Děkuji nebo mám vracet takto ?
public function getVars() {
  return $zelenina;
}
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

xxxxxx avatar 5.5.2014 20:33 xxxxxx | skóre: 23
Rozbalit Rozbalit vše Re: Oprava kódu array a class v php
Odpovědět | | Sbalit | Link | Blokovat | Admin
setVars vám vytvoří pole, které se ztratí, jakmile dojde na konec metody setVars (lokální proměnná). Takže metoda getVars nevrátí to pole, které chcete, protože to s největší pravděpodobností neexistuje. V té třídě by bylo dobré udělat např.:
class Trida
{
  private $zelenina;
}
Potom k tomuto poli můžete přistupovat pomocí $this->zelenina. Toto pole bude viditelné jak pro metodu setVars, tak pro getVars. Potom bych tohle pole vracel pomocí
return $this->zelenina
Jiný přístup by byl použít
global $zelenina
ovšem globálních proměnných je lépe se vyvarovat.
Josef Kufner avatar 5.5.2014 22:59 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Oprava kódu array a class v php
Jo, obal to do třídy. Na global zapomeň.
Hello world ! Segmentation fault (core dumped)
5.5.2014 20:57 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: Oprava kódu array a class v php
Odpovědět | | Sbalit | Link | Blokovat | Admin
Obvykle je lepší místo takového pole vytvořit objekt.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.