16. september 2013 - 17:32
Der er
11 kommentarer og 1 løsning
OOP begynder
Hvorfor giver koden herunder fejlen "Notice: Undefined variable: a in C:\xampp\htdocs" osv. Vh Kim <?php class Test{ private $a = "test"; private $class_navbar1 = "navbar1"; public function __construct() { $this->a = $a; $this->class_navbar1 = $class_navbar1; } public function Display(){ echo $this->a; } } $menu = new Test(); $menu->Display(); ?>
Annonceindlæg fra Infor
16. september 2013 - 17:41
#1
$a er ikke defineret Mener du: public function __construct($a) { $this->a = $a; ... } ?
16. september 2013 - 17:50
#2
Nej, jeg ville ikke have en variabel til __construct-funktionen. Det var et lille forsøg, og så undrer det mig at der kommer en fejl.
16. september 2013 - 18:04
#3
Hvad forventer du at: $this->a = $a; goer?
16. september 2013 - 18:16
#4
Ingenting, men jeg forventede ikke en fejl. Jeg regnede med at $this->a ville være en property, som kunne tilgås med "echo $menu->a;"
16. september 2013 - 18:22
#5
Hvis den ikke var private saa kunne du tilgaa den som: $enellerandeninstansaftest->a
16. september 2013 - 18:24
#6
Hvorfor forventede du ikke en fejl? Du forsoeger at bruge en ikke eksisterende variabel.
16. september 2013 - 18:24
#7
ja, det ville jeg også mene, men nu får jeg jo den fejl med Undefined variable....
16. september 2013 - 18:28
#8
$a er vel en variabel, som jeg sætter til en property inde i constructen med $this->a = $a
16. september 2013 - 18:29
#9
du kommer jo aldrig til: $enellerandeninstansaftest->a naar du faar en fejl inden.
16. september 2013 - 18:30
#10
Nej. Du tildeler fra hoejre mod venste. $this->a = $a saetter ikke variabel a til propertyen a - den forsoeger at saette propertyen a til en ikke eksisterende variabel a.
16. september 2013 - 20:29
#11
Nu har jeg vist forstået det :-) Det virkede ikke fordi der ikke var nogen argumenter til construct-funktionen. Der skulle være to: $a og $class_navbar1: Denneher virker: <?php class Test{ private $a; private $class_navbar1; public function __construct($a, $class_navbar1) { $this->a = $a; $this->class_navbar1 = $class_navbar1; } public function Display(){ echo $this->a; } } $menu = new Test("hans","jens"); $menu->Display(); ?> Jeg kom frem til en bedre forståelse, så tak for hjælpen og læg et svar, så får du point :-) Vh Kim
16. september 2013 - 20:37
#12
svar
Vi tilbyder markedets bedste kurser inden for webudvikling