Hledáme pomocníky pro pražské prezenční kurzy programování - pohodová brigáda. Více info
Nauč se s námi víc. Využij 50% zdarma na e-learningové kurzy. Zároveň pouze tento týden sleva až 80 % na e-learning týkající se Javy
discount week 50
Avatar
VelkyBubak
Člen
Avatar
VelkyBubak:4.11.2013 0:27

hledám, kde mám chybu (a zatím marně)

class Adresar
{
        private $cesta;


        public function __construct($cesta)
        {
        $this->cesta = $cesta;
        }

  public function nacti()
   {
   $slozka = dir($this->cesta);

   while($polozka = $slozka->read())
     {
        if (substr($polozka,-1,1) !='.')
         {
         $this->soubory[] = $polozka;
         }

     }
   $slozka->close();
   }

}

class Galerie extends Adresar
 {

 private $sloupcu;


  public function __construct($cesta, $sloupcu)
   {

   $this->sloupcu = $sloupcu;
   parent::__construct($cesta);

   if(!$this->sloupcu) {$this->sloupcu = 5;}

   }

  public function zobraz()
...

Dokud funkce nacti byla v třídě Galerie, bylo vše ok (upravený kód z http://www.itnetwork.cz/…rie-obrazku/)

 
Odpovědět
4.11.2013 0:27
Avatar
Kit
Redaktor
Avatar
Odpovídá na VelkyBubak
Kit:4.11.2013 0:52

Kdybys vypsal chybové hlášení, udělal bys dobře. Takhle musím věštit, že volání rodičovského konstruktoru musí být první operací.

public function __construct($cesta, $sloupcu = 5) {
   parent::__construct($cesta);
   $this->sloupcu = $sloupcu;
}
Nahoru Odpovědět
4.11.2013 0:52
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
VelkyBubak
Člen
Avatar
Odpovídá na Kit
VelkyBubak:4.11.2013 1:45

Děkuji ti za snahu.
Nebylo to tím - funguje můj i tvůj zápis, ale i tak jsem se z tvého příspěvku poučil (to přiřazení se mi líbí).
Jinak, bohužel mi to žádné chybové hlášení nedávalo, pouze to nefungovalo.

Vlastně jsem na to přišel až po tvé odpovědi - chyba je v class Adresar, změna na

protected $cesta;

úplně stačila

 
Nahoru Odpovědět
4.11.2013 1:45
Avatar
Kit
Redaktor
Avatar
Odpovídá na VelkyBubak
Kit:4.11.2013 7:10

V této části kódu chyba nebyla. Možná o pár řádek níž. Nemohl jsem tušit, že atribut $cesta používáš i v třídě Galerie.

Možná by bylo dobré si pro účely ladění zapnout warningy a noticky. Zapínám je při každém spouštění testů.

Nahoru Odpovědět
4.11.2013 7:10
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.