Avatar billede Lucky_Mik Nybegynder
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();

?>
Avatar billede arne_v Ekspert
16. september 2013 - 17:41 #1
$a er ikke defineret

Mener du:

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

?
Avatar billede Lucky_Mik Nybegynder
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.
Avatar billede arne_v Ekspert
16. september 2013 - 18:04 #3
Hvad forventer du at:

$this->a = $a;

goer?
Avatar billede Lucky_Mik Nybegynder
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;"
Avatar billede arne_v Ekspert
16. september 2013 - 18:22 #5
Hvis den ikke var private saa kunne du tilgaa den som:

$enellerandeninstansaftest->a
Avatar billede arne_v Ekspert
16. september 2013 - 18:24 #6
Hvorfor forventede du ikke en fejl?

Du forsoeger at bruge en ikke eksisterende variabel.
Avatar billede Lucky_Mik Nybegynder
16. september 2013 - 18:24 #7
ja, det ville jeg også mene, men nu får jeg jo den fejl med Undefined variable....
Avatar billede Lucky_Mik Nybegynder
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
Avatar billede arne_v Ekspert
16. september 2013 - 18:29 #9
du kommer jo aldrig til:

$enellerandeninstansaftest->a

naar du faar en fejl inden.
Avatar billede arne_v Ekspert
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.
Avatar billede Lucky_Mik Nybegynder
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
Avatar billede arne_v Ekspert
16. september 2013 - 20:37 #12
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester