creAtiive Skrevet 3. august 2008 Del Skrevet 3. august 2008 Hei, jeg så en kode på internett som inneholdt denne setningen: STemplate::assign('u_info', $u_info[0]); Hva betyr :: ? Lenke til kommentar
South_Bridge Skrevet 3. august 2008 Del Skrevet 3. august 2008 Litt usikker med php, men STemplate er kanskje en klasse og assign er da en medlemsfunskjon av den klassen? Lenke til kommentar
Ernie Skrevet 3. august 2008 Del Skrevet 3. august 2008 :: er «Scope Resolution Operator» og brukes for å aksessere statiske variabler og funksjoner i tillegg til konstanter i en klasse. Lenke til kommentar
grimjoey Skrevet 3. august 2008 Del Skrevet 3. august 2008 i tillegg til det ernie sier brukes :: til å få tilgang til uinstansierte metoder. praktisk dersom man har overloada en metode og ønsker å bruke den orginale. eller om du ønsker å bruke funksjoner fra en klasse uten behov for instansiering. fra php.net: <?php class A { function example() { echo "I am the original function A::example().<br />\n"; } } class B extends A { function example() { echo "I am the redefined function B::example().<br />\n"; A::example(); } } // there is no object of class A. // this will print // I am the original function A::example().<br /> A::example(); // create an object of class B. $b = new B; // this will print // I am the redefined function B::example().<br /> // I am the original function A::example().<br /> $b->example(); ?> du kan også benytte :: slik: <?php class myClass { public function example($msg) { print $msg; } } myClass::example('test'); // merk at myClass ikke er instansiert. ?> for å få tilgang til en konstant: <?php class myClass { const MY_CONST = 'My value!'; public function __construct() { print self::MY_CONST; } } ?> Lenke til kommentar
Jonas Skrevet 3. august 2008 Del Skrevet 3. august 2008 i tillegg til det ernie sier brukes :: til å få tilgang til uinstansierte metoder. praktisk dersom man har overloada en metode og ønsker å bruke den orginale. eller om du ønsker å bruke funksjoner fra en klasse uten behov for instansiering. Det var vel strengt tatt ikke noe tillegg. At en metode er statisk betyr jo nettopp at man har tilgang til den uten å instansiere objektet, og det var det Ernie sa. Declaring class members or methods as static makes them accessible without needing an instantiation of the class. A member declared as static can not be accessed with an instantiated class object (though a static method can). Lenke til kommentar
grimjoey Skrevet 3. august 2008 Del Skrevet 3. august 2008 man trenger ikke deklarere noe statisk for å kunne bruke :: Lenke til kommentar
Jonas Skrevet 3. august 2008 Del Skrevet 3. august 2008 (endret) Var det rettet mot meg eller nok et "tillegg" ? Kan hvertfall nevne at det er noe unikt for PHP og helt feil iflg. all logikk rundt OOP. Det virker veldig misvisende å kalle en ikke-statisk metode, statisk og man bør derfor holde seg unna det. Sannsynligvis er det slik for å beholde bakoverkompatibilitet, i likhet med mye annet i PHP, for de som fortsatt sverger til tidligere versjoner. Endret 3. august 2008 av Jonas Lenke til kommentar
grimjoey Skrevet 4. august 2008 Del Skrevet 4. august 2008 rettet mot deg. jeg har aldri hatt behov for å definere metoder og variabler statisk, men ser at det kan være en fordel. Lenke til kommentar
Alex Moran Skrevet 4. august 2008 Del Skrevet 4. august 2008 I PHP5 får du en E_STRICT error om du ikke deklarer statiske metoder static, og fatal error om du ikke deklarer statiske variabler som static. Lenke til kommentar
OISNOT Skrevet 11. august 2008 Del Skrevet 11. august 2008 i tillegg til det ernie sier brukes :: til å få tilgang til uinstansierte metoder. praktisk dersom man har overloada en metode og ønsker å bruke den orginale. eller om du ønsker å bruke funksjoner fra en klasse uten behov for instansiering. Det var vel strengt tatt ikke noe tillegg. At en metode er statisk betyr jo nettopp at man har tilgang til den uten å instansiere objektet, og det var det Ernie sa. Declaring class members or methods as static makes them accessible without needing an instantiation of the class. A member declared as static can not be accessed with an instantiated class object (though a static method can). Erm, det som grimjoey mente var vel at det kan brukes til å kalle foreldre klassens metode. http://no.php.net/manual/en/keyword.parent.php Lenke til kommentar
Runar Skrevet 15. august 2008 Del Skrevet 15. august 2008 (endret) Jeg leste alle postene flere ganger, men sitter fortsatt igjen med følgende spørsmål: Er det en betydelig forskjell på bruk av $class->foo og $class::foo? Spørsmålet ble besvart. Endret 15. august 2008 av Runar Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå