Autor Zpráva
Jirik1
Profil *
Ahoj, chtel jsem se zeptat jestli je nutne definovat $this v konstruktoru, jak jsem to videl v ruznych tutorialech. Vypisuje mi to varovani a nevim, jak ho odstranit. Kdyz konstruktor odstranim, pak vse funguje. Ma verze PHP je 7.2.10.

<?php namespace constr;

class SKonstruktorem {

    public $promenna = 'Slovo';

    public function __construct() {
        if ($promenna != '') {
            $this->promenna = $promenna;
        }
    }

    public function vypisConstruct() {
        echo $this->promenna;
    }

}
DarkMeni
Profil
Varování pravděpodobně způsobuje 8. řádek: if ($promenna != '') {
Neboť $promenna není definovaná, ani zahrnuta do funkce/metody přes global $promenna.

Nemá si ji brát třeba z argumentu? To by 7. řádek musel vypadat takto: public function __construct($promenna) {
Joker
Profil
Jirik1:
V první řadě: Pokud se řešený problém projevuje nějakou chybovou hláškou, důležitá součást dotazu je text té chybové hlášky. V tomhle případě si to můžeme domyslet, ale leckdy to je ta nejpodstatnější informace.

K dotazu:
1. Nevím, co znamená definovat $this. V běžném významu toho slova $this nejen není nutné definovat, ale ani to nejde.
Ani ukázkový kód to nedělá.

2. Ukázkový kód nedává moc smysl, konstruktor používá nedefinovanou proměnnou $promenna, což je nejspíš i příčinou toho varování.
Nejspíš jde o nepochopení tohoto:
    public function __construct($promenna) {
        if ($promenna != '') {
            $this->promenna = $promenna;
        }
    }

což by sloužilo k nastavení hodnoty atributu objektu už při vytváření.
Jirik1
Profil *
Pomohlo az tohle:
<?php namespace constr;

class SKonstruktorem {

    public $promenna = 'Slovo';

    public function __construct($promenna = '') {
        if ($promenna != '') {
            $this->promenna = $promenna;
        }
    }

    public function vypisConstruct() {
        echo $this->promenna;
    }

}
Bere to i "$promenna = NULL" a "$promenna = false". Akorat nevim jestli to je potreba, kdyz to jde i bez definovani. Kdyz smazu konstruktor, pak to zadnou chybu nevypise a funkce vypisConstruct se vykona...


Joker:

Dobre:
Notice: Undefined variable: promenna in C:\wamp64\www\oop\const.php on line 8
Jirik1
Profil *
Tak jsem delal chybu jeste nekde jinde :-)


P.S.
Takhle to staci: public function __construct($promenna) {

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0