Gå til innhold

Hva betyr :: ?


Anbefalte innlegg

Videoannonse
Annonse

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
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

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 av Jonas
Lenke til kommentar
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

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...