Autor | Zpráva | ||
---|---|---|---|
Jirik1 Profil * |
#1 · Zasláno: 11. 11. 2018, 20:43:10
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 |
#3 · Zasláno: 11. 11. 2018, 21:12:31
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; } } 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) { |
||
Časová prodleva: 5 let
|
0