Gå til innhold

[Løst]To spørsmål om OOP og PHP


Anbefalte innlegg

Hei!

 

1. Har to spørsmål om OOP og php. Har to klasser:

class langError404{
public static $langError404Message = "404 error";

}
class error404
{
public static $message = langError404::$langError404Message;

}
echo error404::$message;

Når jeg skriver ut error404::$message får jeg

Parse error: parse error, expecting `T_STRING' in F:\PortableApps\xampp\htdocs\pages\404.php on line 5. Har også kjørt en var dump på dette med samme resultat. Jeg tolker dette som at php ikke skjønner at langError404::$langError404Message er en string, og at måten jeg gjør dette på ikke fungerer. Hvordan må jeg i så fall gjøre det? Legge langError404::$langError404Message i en private static string og lage en funksjon som returnerer variabelen?

2. Er det vanelig å legge alt som skal skrives ut i private og lage funksjoner til å skrive/endre de eller er dcet vanelig og legge de public?

 

Takk for alle svar :D

Lenke til kommentar
Videoannonse
Annonse
Hei!

 

1. Har to spørsmål om OOP og php. Har to klasser:

class langError404{
public static $langError404Message = "404 error";

}
class error404
{
public static $message = langError404::$langError404Message;

}
echo error404::$message;

Når jeg skriver ut error404::$message får jeg

Parse error: parse error, expecting `T_STRING' in F:\PortableApps\xampp\htdocs\pages\404.php on line 5. Har også kjørt en var dump på dette med samme resultat. Jeg tolker dette som at php ikke skjønner at langError404::$langError404Message er en string, og at måten jeg gjør dette på ikke fungerer. Hvordan må jeg i så fall gjøre det? Legge langError404::$langError404Message i en private static string og lage en funksjon som returnerer variabelen?

2. Er det vanelig å legge alt som skal skrives ut i private og lage funksjoner til å skrive/endre de eller er dcet vanelig og legge de public?

 

Takk for alle svar :D

 

 

Du kan ikke kalle en annen objekt eller funksjon direkte når du definerer et variabel i en objekt.

 

Så riktig måte blir da:

<?php
class langError404{
 public static $errorMessage = 'lang melding ...';
}

class error404{
 public static $message;
 public static function getLangErrorMessage(){
	  return langError404::$errorMessage;
 }
}

echo error404::$message;

?>

 

en annen måte er å gjøre følgende:

class langError404{
 public static $errorMessage = 'lang melding ...';
}

class error404 extends langError404{
}

echo $error404::$errorMessage;

 

Ved å arve en objekt så kan du nå variabelen til det objektet direkte.

Lenke til kommentar

OXOdesigns: Prøvde det med extends, men tenkte ikke på at jeg kunne nå variabelen direkte. Takk :D

 

Jonas: Vil ikke dette kreve ekstra med ressurser av hardware, i og med at du får opptil dobbelt så mange ekstra funksjoner som du har variabler?

Endret av Rockie
Lenke til kommentar

Resursbruken vil ikke endres nei.

Du vil såklart få noen ekstra bytes som må leses gjennom, men om du så har en fantazillion ulike variabler med tilhørende gettere og settere, vil du aldri, overhodet ikke, klare å merke noen forskjell.

 

Hvis du har lyst til å lage ressurssparende kode, er dette helt feil ende å begynne i. Men du er langt i fra den eneste som er bekymret for ressursbruk. Bl.a. er det flere som tror på myten om at echo $var; er kjappere enn print($var);, men utallige forsøk viser at det spiller overhodet ingen praktisk rolle hvilken av metodene man bruker..

 

Nuja; variablen fikk du tilgang til via arv ja.

Lenke til kommentar

Her:

<!-- put this at the top of the page -->
<?php
  $mtime = microtime();
  $mtime = explode(" ",$mtime);
  $mtime = $mtime[1] + $mtime[0];
  $starttime = $mtime;
;?>

<!-- put other code and html in here -->


<!-- put this code at the bottom of the page -->
<?php
  $mtime = microtime();
  $mtime = explode(" ",$mtime);
  $mtime = $mtime[1] + $mtime[0];
  $endtime = $mtime;
  $totaltime = ($endtime - $starttime);
  echo "This page was created in ".$totaltime." seconds";
;?>

Hentet fra http://www.developerfusion.com/code/2058/d...on-time-in-php/

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...