Avatar
VelkyBubak
Člen
Avatar
VelkyBubak:

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:

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  +1 4.11.2013 0:52
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
VelkyBubak
Člen
Avatar
Odpovídá na Kit
VelkyBubak:

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:

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.