Avatar billede matz Nybegynder
07. juli 2008 - 12:56 Der er 13 kommentarer

udskriver ikke status

Den vil ikke udskrive status, men med navnet virker det fint.

<?php
class Fodboldhold
{
   
    public $navn;
    public $status;
   
    public function __construct($navn = null, $status = null)
    {
       
        $this->setNavn($navn);
        $this->setStatus($status);
       
    }
   
    public function LogOnline()
    {
        $this->status = "Online";
    }
   
    public function LogOffline()
    {
        $this->status = "Offline";
    }
   
    public function TjekLog()
    {
        if ($this->status = 1) {
            return true;
        }
        else
            return false;
       
    }
    public function setNavn($navn)
    {
        if(is_string($navn))
        {
            $this->navn = $navn;
            return true;
        }
        else
            return false;
    }
    public function setStatus($status)
    {
        if(is_string($status))
        {
            $this->status = $status;
            return true;
        }
        else
            return false;
    }
    public function getStatus()
    {
        return $this->status;
    }
    public function getNavn()
    {
        return $this->navn;
    }
}
?>

<?php


$mit_hold = new Fodboldhold("Liverpool");
echo $mit_hold->getNavn();
$mit_hold->LogOnline();
if($mit_hold->status === true)
    echo $mithold->getStatus;
else
    echo $mithold->getStatus;

?>
Avatar billede cronaldo Nybegynder
07. juli 2008 - 13:43 #1
du mangler vist også en løkke?


{
        if(is_string($status))
        {
            $this->status = $status;
            return true;
        }
        else
            return false;
        } // (DENNE LØKKE ER INDSAT)
    }
Avatar billede matz Nybegynder
07. juli 2008 - 13:48 #2
Den løkke har jeg inde:

public function setStatus($status)
    {
        if(is_string($status))
        {
            $this->status = $status;
            return true;
        }
        else
            return false;
    }
Avatar billede cronaldo Nybegynder
07. juli 2008 - 14:53 #3
nej ? .. du afslutter ikke din "ELSE LØKKE" .. eller rettere - du afslutter ikke din "public function"-løkke!
Prøv lige at sætte det jeg skrev ind, og se om det ikk virker, :)
Avatar billede dkfire Nybegynder
07. juli 2008 - 16:33 #4
Den klasse er god nok det er cronaldo som lige skal tælle { og } efter igen.

Men din kode når du kalder din klasse er der fejl i:

$mit_hold = new Fodboldhold("Liverpool");
echo $mit_hold->getNavn();
$mit_hold->LogOnline();
if($mit_hold->status === true)
    echo $mit_hold->getStatus;
else
    echo $mit_hold->getStatus;

Du havde glemt en _ i din variabel.
Avatar billede matz Nybegynder
07. juli 2008 - 20:49 #5
Dkfire ->

Det har jeg rettet nu, men der udskriver stadig intet.
Avatar billede fant0mas Nybegynder
07. juli 2008 - 22:28 #6
$this->status = 1
til:
$this->status == 1
Avatar billede fant0mas Nybegynder
07. juli 2008 - 22:37 #7
Ahh, når jeg kigger nærmere, så er den vist helt gal flere steder.
Tilbage på tegnebrættet.
Avatar billede matz Nybegynder
10. juli 2008 - 09:13 #8
Ingen der kan hjælpe? :)
Avatar billede dkfire Nybegynder
10. juli 2008 - 11:00 #9
Der er flere ting som er helt galt med din kode.
Når du sammenligner en variabel med en værdi så skal du bruge ==.
= er kun til at tildele en værdi.

Så der din værdi i status, først sætter du den til "Online", dernæst tjekker du om værdien er 1 og på andre steder true, hvilket den bestem ikke er. Du bør nok gøre som fant0mas skriver, start forfra og tænk din kode rigtig godt igennem.

Ellers kunne det være:

<?php
class Fodboldhold
{
    public $navn;
    private $status = "Offline";
 
    public function __construct($navn = null, $status = "Ofline")
    {
        $this->setNavn($navn);
        $this->setStatus($status);
     
    }
 
    public function LogOnline()
    {
        $this->status = true;
    }
 
    public function LogOffline()
    {
        $this->status = false;
    }
 
    public function TjekLog()
    {
        if ($this->status == "Online" ) {
            return true;
        }
        else
            return false;
     
    }
    public function setNavn($navn)
    {
        if(is_string($navn))
        {
            $this->navn = $navn;
            return true;
        }
        else
            return false;
    }

    public function setStatus($status)
    {
        if(is_string($status))
        {
            $this->status = $status;
            return true;
        }
        else
            return false;
    }

    public function getStatus()
    {
        return $this->status;
    }
    public function getNavn()
    {
        return $this->navn;
    }
}
?>

<?php
$mit_hold = new Fodboldhold("Liverpool");
echo $mit_hold->getNavn();
$mit_hold->LogOnline();
if($mit_hold->getStatus === "Online")
    echo "Bruger Online";
else
    echo "Bruger Offline";

?>
Avatar billede matz Nybegynder
10. juli 2008 - 15:44 #10
dkfire ->

Nu udskriver den "bruger offline" - men passer vel ikke når man først sætter LogOnline();
Avatar billede dkfire Nybegynder
10. juli 2008 - 21:19 #11
Prøv lige at rette:
if($mit_hold->getStatus === "Online")
til
if($mit_hold->getStatus() == "Online")
Avatar billede matz Nybegynder
13. juli 2008 - 21:47 #12
Dkfire det virker nu... Så koden burde være ok nu? - eller har den sine fejl?

Lig et svar.
Avatar billede dkfire Nybegynder
21. juli 2008 - 17:37 #13
Der er nok et par ting som kan rettes til, bl.a. vil jeg personlig ikke bruge Online/Offline, men i stedet bruge true/false eller 1/0.
Dernæst bør du ikke have funktionen setStatus, da du så ingen mulighed har for at være sikker på at Status enten er Online eller Offline.

Men arbejd du bare videre fra det du har nu, så vil du sikkert senere selv finde ud af hvad der er smartest.
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