Avatar billede josto Nybegynder
27. december 2003 - 22:43 Der er 5 kommentarer og
1 løsning

Brug af extends

Hej

Jeg har i de sidste døgn forsøgt at lave noget funktionalitet til fejlhåndtering og har næsten givet op!
Nedenstående kode er kraftigt forsimplet, men min idé er stadig synlig. Det skal siges at klassen "a" skal bruges af mange klasser, hvorfor det ikke er ønskeligt at slå "a" og "b" sammen!

Klassen "a" har en variabel som kan sættes alt efter om der opstod fejl eller ej.
Klassen "b" udfører noget funktionalitet (Kald/søgninger i databaser), hvis der opstår fejl signaleres der ved at sætte variablen i klassen "a".

Der oprettes en instans af "b" på de sider hvor funktionaliteten er nødvendig. Efter hver kommando (til klassen "b") undersøges det om der opstod en fejl i klassen "b", ved at spørge klassen "a".


Class a
{
    var $isError
    function a()
    {
        $this->isError  = false;
    }

    function isError()
    {
        return $this->isError;
    }
   
    function setError($setError)
    {
        $this->isError = $setError;
    }
}

class b extends a
{
    function b()
    {     //TOM   
    }
   
    function funkB()
    {
        setError(false);
        //Noget funktionalitet...
        if(/*Der er opstået en fejl*/)
        {
            setError(true);
        }
    }
}

$myInstance = new b();
$myInstance->funkB()
if($myInstance->isError()) //Undersøger om der opstod en fejl
{
    //Fejlhåndteringen sker her
}

Mit problem er så:

Når jeg undersøger om der opstod en fejl, kommer der en fejlmeddelelse med teksten:

Parse error: parse error, unexpected T_VARIABLE in /hom..... [Henviser så til netop den linje]

Giver extends mulighed for at lave koden som beskrevet, eller...?

P.S: Jeg mener at have læst alt, hvad der burde kunne løse problemet uden at komme et svar nærmere.
Avatar billede detox Nybegynder
27. december 2003 - 22:57 #1
var $isError
her mangler du en ;
var $isError;
Avatar billede erikjacobsen Ekspert
27. december 2003 - 22:58 #2
Jeg har ikke kigget alt igennem, men du mangler semikoloner på linierne
  $myInstance->funkB()
og
  var $isError
og skal muligvis ændre
  setError(false);
til
  $this->setError(false);
Avatar billede josto Nybegynder
28. december 2003 - 19:01 #3
Takker for de hurtige svar!

Begge ting samt en anden rigtig dum fejl på siden havde en kraftig indvirkning på afviklingen af siden.

Moralen er således: tag en pause når det hele går i sort.

Tak for hjælpen og godt nytår!

Josto
Avatar billede erikjacobsen Ekspert
28. december 2003 - 19:10 #4
En ting mere. Din constructor i a kaldes ikke automatisk. du kan fx i b:

function b()
    {  $this->a();
    }
Avatar billede josto Nybegynder
01. januar 2004 - 19:56 #5
Hej Erik

Constructoren har jeg fået klaret, så det problem er også blevet løst.
Det hele virker nu efter hensigten. Takker for hjælpen (eller de andre øjne om man vil). Hvis du vil have point må du oprette et svar, ellers lukker og slukker jeg om et par dage!

josto
Avatar billede erikjacobsen Ekspert
01. januar 2004 - 20:00 #6
ok ;)
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