Fatal error: Call to a member function

Tags:    php

<< < 12 > >>
Hejsa!

Jeg har et problem med noget OOP. Jeg har aldrig haft dette problem før og jeg forstår, samt kan ikke se hvor problemet er.-

Er er min klasse..
class.mysql.php
Fold kodeboks ind/udPHP kode 



Her kalder jeg get_list i en anden klasse, som til sidst bliver kaldt.
class.rights.php
Fold kodeboks ind/udPHP kode 


Og her kalder jeg den:
if($rights->admin($_COOKIE['login']) == false) { die(); }

Og fejlen er:
Fatal error: Call to a member function get_info() on a non-object in C:\htdocs\test\system\class\rights.class.php on line 4


Mvh. Magnus.



Indlæg senest redigeret d. 18.05.2010 15:18 af Bruger #15047
Du har ikke en lokal variabel med navnet $database. Den skal du nok give med som parameter til 'admin' funktionen.



Hvordan får jeg den så lokal? Jeg har den inkluderet :P
index.php
Fold kodeboks ind/udPHP kode 




Indlæg senest redigeret d. 18.05.2010 17:14 af Bruger #15047
Hvordan får jeg den så lokal? Jeg har den inkluderet :P
index.php
Fold kodeboks ind/udPHP kode 


Fold kodeboks ind/udKode 


...eller nok lidt kønnere:
Fold kodeboks ind/udKode 




Tusinde tak, nu virker det :D



undgå gerne at bruge global...

Lav det hellere i starten af dit objekt eller lav et instance som er static...



undgå gerne at bruge global...

Lav det hellere i starten af dit objekt eller lav et instance som er static...

Hvorfor skal jeg undgå det?
Og hvordan laver jeg det statisk?



undgå gerne at bruge global...

Lav det hellere i starten af dit objekt eller lav et instance som er static...

Hvorfor skal jeg undgå det?
Og hvordan laver jeg det statisk?


Globale variable er tvivlsomt design som giver en grim binding som kan være svær at slippe af med når man en dag vil ændre sit design eller måske endda implementere unit testing.

Men statiske variable er ikke meget bedre. Dependency injection er en hel del bedre...altså at du leverer din database reference til metoden når den kaldes istedet for at den finder den et sted, som kunne ændre sig en dag.



Hejsa.

Jeg har læst lidt om "Dependency injection".
Og er kommet frem til dette..
Fold kodeboks ind/udPHP kode 

Kilde: http://www.potstuck.com/2009/01/08/php-dependency-injection/

Er det sådan at jeg skal bygge min mysql.class.php op?



Hejsa.

Jeg har læst lidt om "Dependency injection".
Og er kommet frem til dette..
Fold kodeboks ind/udPHP kode 

Kilde: http://www.potstuck.com/2009/01/08/php-dependency-injection/

Er det sådan at jeg skal bygge min mysql.class.php op?


Hvis det giver mening for dig. Der er ikke noget korrekt svar på den slags. Public static er ikke meget forskellig fra globale variable og derfor også lidt skidt. Det kunne måske give større fleksibilitet at give en database reference med til makeBook() metoden:
Fold kodeboks ind/udKode 




Hejsa.

Jeg har læst lidt om "Dependency injection".
Og er kommet frem til dette..
Fold kodeboks ind/udPHP kode 

Kilde: http://www.potstuck.com/2009/01/08/php-dependency-injection/

Er det sådan at jeg skal bygge min mysql.class.php op?


Hvis det giver mening for dig. Der er ikke noget korrekt svar på den slags. Public static er ikke meget forskellig fra globale variable og derfor også lidt skidt. Det kunne måske give større fleksibilitet at give en database reference med til makeBook() metoden:
Fold kodeboks ind/udKode 



Og hvordan kalder jeg så databasen?

Jeg kan ikke få den til at tislutte med kodeord og brugernavn, samt extern db.

Jeg prøver lige denne kilde:
http://refactormycode.com/codes/416-mysql-original-php-5-wrapper-class

Jeg har fået lavet dette og det virker ren faktisk:
Fold kodeboks ind/udPHP kode 




Indlæg senest redigeret d. 19.05.2010 15:44 af Bruger #15047
<< < 12 > >>
t