Avatar billede mrfunder Nybegynder
21. februar 2008 - 18:36 Der er 8 kommentarer

Call to a member function get_sid() on a non-object

Hej Eksperter. Når jeg prøver at bruge $user->user_logout(); får jeg en fejl besked: Call to a member function get_sid() on a non-object.

Er der nogen der kan fortælle mig hvad jeg gør galt?
På forhånd tak :)


$session = new Session;
$user = new User;
$user->user_logout();

session.php ------------------------------------

class Session {
   
    function Session() {

        session_start ();
    }

    public function get_sid() {

        return session_id ();
    }

    public function destroy() {

        $this->ses_unset ();
        session_destroy ();
    }
}

user.php ----------------------------------------

class User extends Mysql {

    public function __construct() {

    $this->table_name = "usergroups";
   
    }
    public function user_logout() {
        if (!$session->get_sid("authid")) {
            $session->destroy("authid");
        }
    }
}
Avatar billede mrfunder Nybegynder
21. februar 2008 - 18:37 #1
Bemærk venligst at mine classes kun de brugte funktioner.
Avatar billede mrfunder Nybegynder
21. februar 2008 - 18:37 #2
viser de brugte funktioner*
Avatar billede arne_v Ekspert
21. februar 2008 - 18:43 #3
scope reglerne for variable ikke erklaeret global er vel de samme i OOP PHP som i ikke-OOP PHP
Avatar billede mrfunder Nybegynder
21. februar 2008 - 19:05 #4
Det forstod jeg ikke lige..
Avatar billede erikjacobsen Ekspert
21. februar 2008 - 19:21 #5
public function user_logout() {
        global $session;
        if (!$session->get_sid("authid")) {
            $session->destroy("authid");
        }
    }
Avatar billede erikjacobsen Ekspert
21. februar 2008 - 19:23 #6
Men at en klasse kender til globale variabler er oftest ikke hensigtsmæssigt - i hvert hvis den generelle kompleksitet vokser. Den kunne i stedet komme med som referenceparameter i constructoren.
Avatar billede mrfunder Nybegynder
21. februar 2008 - 19:47 #7
Mange tak-

Er det muligt du vil give et eksempel med korrekt brug af constructoren i så fald?
Og venligst smid et svar :- )
Avatar billede erikjacobsen Ekspert
21. februar 2008 - 23:23 #8
Jeg samler slet ikke på point, tak.
I stort set alle andre sprog end PHP ville jeg kunne give dig eksempler som ønsket. Men PHPs reference-begreb kan vistnok ikke udtrykke det (så vidt jeg husker).
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
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

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