login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[PHP] 2x ::

Offline Ultimatum - 01/11/2006 19:14 (laatste wijziging 01/11/2006 19:14)
Avatar van UltimatumPHP expert Ey ik ben me nu een beetje aan het verdiepen in OOP dus zat wat classes hier in scripts door te kijken en toen zag ik dit:
  1. <?php
  2. $this->rank = Login::BerekenRang();
  3. ?>


maar waar dient nou die :: voor dan? Want ik snap het niet...

17 antwoorden

Gesponsorde links
Offline Wouser - 01/11/2006 19:29
Avatar van Wouser PHP interesse hmmm dat had ik toevallig straks gelezen 

Dat ging over iets terug zetten naar een vorige class in dit geval login als ik het goed heb
Offline Stijn - 01/11/2006 19:45 (laatste wijziging 01/11/2006 19:47)
Avatar van Stijn PHP expert de functie is gewoon static 

  1. <?php
  2. class SomeClass
  3. {
  4.  
  5. static public function BerekenRang()
  6. {
  7. //.....
  8. }
  9.  
  10. }//einde class
  11. ?>


verta je het?

[nut?]

Je kan ze globaal en overal aanroepen (de functies dan te verstaan) zonder 'new Someclass();' te gebruiken ;-

  1. <?
  2. class SomeClass
  3. {
  4.  
  5. static public function BerekenRang()
  6. {
  7. //.....
  8. }
  9.  
  10. echo SomeClass::BerekenRang();
  11.  
  12. ?>
Offline Ultimatum - 01/11/2006 19:50
Avatar van Ultimatum PHP expert oke, maar deze was binnen de classe, maakt dat nog uit?

je uitleg was wel duidelijk btw 
Offline Stijn - 01/11/2006 19:54
Avatar van Stijn PHP expert hoe bedoel je met binnen de class... je kan ook een static functie zonder class schrijven.

  1. <?
  2. static function test()
  3. {
  4. return 'stijn';
  5. }
  6.  
  7. echo test();
  8. ?>
Offline Gerard - 01/11/2006 19:59
Avatar van Gerard Ouwe rakker Het aanroepen met de :: heeft ermee te maken dat je een functie van een class wilt aanroepen zonder daar eerst een object van aan te maken. Een goed voorbeeld hiervan is bovengenoemde static functies (PHP5).
Offline Ultimatum - 01/11/2006 20:08
Avatar van Ultimatum PHP expert heb net het script terug gevonden, maar hier staat dus in wat ik bedoel, hij roept in een andere functie de functie BerekenRang aan

http://www.site...mp;id=1015
Offline Stijn - 01/11/2006 22:00
Avatar van Stijn PHP expert dat moet toch niet goed werken als ik dat zo zie. Je kan daar beter $this->BerekenRang(); gebruiken en die functie is trouwens niet static... 
Offline Ultimatum - 01/11/2006 23:12
Avatar van Ultimatum PHP expert Oke, ik snap er niets van dus ik zal het wel op jou manier gaan doen als dat zekr te weten werkt 
Offline Stijn - 01/11/2006 23:17
Avatar van Stijn PHP expert het werkt misschien wel maar als je :: gebruikt moet de functie static zijn zie voorbeeld van mij hierboven. Maar die functie in je login class is niet static dus gebruik je gewoon $this->functie(); ipv Login::functie();
Offline bosgroen - 02/11/2006 12:54 (laatste wijziging 02/11/2006 12:55)
Avatar van bosgroen Gouden medaille

PHP interesse
een :: wordt ook gebruikt om een parent-functie aan te roepen

class a {
function x() {}
}
class b extends a {
function x() { parent::x(); }
}
Offline Stijn - 02/11/2006 16:07
Avatar van Stijn PHP expert @bosgroen: ja enkel bij static hier moet je gewoon $this->x(); toepassen en niet parent::x();

hier is een voorbeeld:
  1. <?
  2. class A {
  3.  
  4. static protected function x()
  5. {
  6. return "stijn";
  7. }
  8.  
  9. public function y()
  10. {
  11. return " is 17";
  12. }
  13.  
  14. }
  15.  
  16.  
  17. class B extends A {
  18.  
  19. public function z() // dit kan NOOIT static zijn
  20. {
  21. echo parent::x() . $this->y();
  22. }
  23.  
  24. }
  25.  
  26. $obj = new B;
  27. $obj->z();
  28.  
  29. ?>


stijn

Offline Tony_mortana - 01/12/2006 16:56
Avatar van Tony_mortana PHP interesse Handig om te weten!  
Offline raza - 01/12/2006 20:48
Avatar van raza HTML beginner scope-operator

om een static methode van een klasse op te roepen (dwz. zonder de klasse te instantiëren).
Offline Stijn - 01/12/2006 21:25
Avatar van Stijn PHP expert @raza: dat is inderdaad de bedoeling 
Offline nemesiskoen - 02/12/2006 09:23
Avatar van nemesiskoen Gouden medaille

PHP expert
Citaat:
maar als je :: gebruikt moet de functie static zijn

nee hoor
Offline Stijn - 02/12/2006 11:05 (laatste wijziging 02/12/2006 11:13)
Avatar van Stijn PHP expert @vage: mmm , wist ik niet. goed voor weten

[toevoeging]

Heb eens zitten prutsen

  1. <?php
  2.  
  3. class A
  4. {
  5.  
  6. public static function B() //je kan static ook weglaten
  7. {
  8. return new C;
  9. }
  10.  
  11. }
  12.  
  13. class C {
  14.  
  15. public function D()
  16. {
  17. return "booster";
  18. }
  19.  
  20. }
  21.  
  22. echo A::B()->D();
  23. ?>
Offline nemesiskoen - 02/12/2006 14:42
Avatar van nemesiskoen Gouden medaille

PHP expert
Zo'n dingen kan je dus goed gebruiken bij bv een dal of een model dat een ander model terugstuurt. Als je dus een statisch model hebt:

  1. <?php
  2.  
  3. class User {
  4. protected static $_table = "users";
  5.  
  6. public static function getUsergroups($id) {
  7. return DataBase::getInstance->select('usergroups', 'where user_id = ?', $id);
  8. }
  9.  
  10. }
  11.  
  12. class Usergroups {
  13. protected static $_table = "usergroups";
  14.  
  15. public static function whatever() {
  16. //...
  17. }
  18. }
  19.  
  20. $result = User::getUsergroups::whatever();
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.249s