Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] sprawdzenie instancji danej klasy
Forum PHP.pl > Forum > Przedszkole
plisek
witam sadsmiley02.gif

czy jest mozliwe sprawdzenie, czy instnieje jakas instancja klasy?
np mamy klase A
i chcę sprawdzic, czy został juz utworzony jakis obiekt tej klasy.

szukam w manualu, ale niestety od dłuzszego czasu nie moge znaleśc
można sprawdzic czy dany obiekt jest implementacja jakiejs klasy, ale nie oto mi chodzi

pozdr
dr_bonzo
Np. uzyj takiego kodu:
  1. <?php
  2. class JakasKlasa
  3. {
  4. static private $instanceCounter = 0;
  5. static public function getNewInstance( $param1, $param2 )
  6. {
  7. $obj = new JakasKlasa( $param1, $param2 );
  8. self::$instanceCounter++;
  9. return $obj;
  10. }
  11.  
  12. private function __construct( $param1, $param2 )
  13. {
  14. //....
  15. }
  16.  
  17.  
  18. static public function getInstancesCount()
  19. {
  20. return self::$instanceCounter
  21. }
  22. }
  23.  
  24. $x = JakasKlasa::getNewInstance( 1,);
  25. print( 'count = ' . JakasKlasa::getInstancesCount() . '<br />' );
  26. $y = JakasKlasa::getNewInstance( 1,);
  27. print( 'count = ' . JakasKlasa::getInstancesCount() . '<br />' );
  28. ?>
plisek
dzieki za pomoc, nawet mi to do głowy nie przyszło ohmy.gif

ale czy nie mozna tego krocej napiszć np:
  1. <?php
  2. class JakasKlasa {
  3.  
  4. static public $instanceCounter = 0;
  5.  
  6. public function __construct() {
  7.   //tworzac nowy obiekt w konstruktorze zwiekszam licznik instancji klasy
  8. self::$instanceCounter++;
  9. }
  10.  
  11. static public function getInstancesCount() {
  12. return self::$instanceCounter;
  13. }
  14. }
  15.  
  16. $x = new JakasKlasa;
  17. $z = new JakasKlasa;
  18.  
  19. echo JakasKlasa::$instanceCounter; // 2 obiekty 2 w liczniku 
  20. ?>



powiem szczerze, ze na moje potrzeby to wystarczy.
interesuje mnie zaś czy bedzie jakas rożnica w funkcjonalności tych dwoch podobnych skryptow.
Bo może sie myle i takie przerobienie jest błedem ?!

pozdr
dr_bonzo
  1. <?php
  2. public function __construct() {
  3.  //tworzac nowy obiekt w konstruktorze zwiekszam licznik instancji klasy
  4. self::$instanceCounter++;
  5. }
  6. ?>

No tak -- duzo prosciej smile.gif
Po prostu mam jeszcze goraczke biggrin.gif

Cytat
interesuje mnie zaś czy bedzie jakas rożnica w funkcjonalności tych dwoch podobnych skryptow.

Beda dzialac tak samo.
Pamietaj jednak zeby nie zwiekszac licznika gdy wyrzucasz wyjatek z konstruktora -- bo obiekt nie zostanie utworzony a licznik zostanie zwiekszony.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.