Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP5] Coś jak kontener na dane
Landon
post
Post #1





Grupa: Zarejestrowani
Postów: 83
Pomógł: 3
Dołączył: 21.04.2007
Skąd: Sosnowiec

Ostrzeżenie: (0%)
-----


Zastanawia mnie fakt braku jednego elemetu w języku (bądź ja go nie znam / nie znalazłem). Chodzi konkretnie o to że gdy zdefiniuje sobie jakąś klasę np
  1. <?php
  2. class moja {
  3. public $zmienna1 = array();
  4. public $zmienna2 = array();
  5. public function cos() {}
  6. }
  7. ?>

No i np chciałbym przekazać wszystkie wartości zmienne do jakiejś innej klasy i chciałbym aby ta klasa byla traktowana jako taka baza czyli jeśli wyślę tam $zmienną1 to mogę ją pobrac w innej klasie przez dziedziczenie... moim zdaniem powinno istnieć coś takiego

  1. <?php
  2. base nazwa {
  3.  $jakas_zmienna = array();
  4.  $cos = 0;
  5. }
  6.  
  7. class moja get_base nazwa {
  8.  public function cos() {
  9.    $cos += 1;
  10.  }
  11. }
  12.  
  13. class moja2 get_base nazwa {
  14.  public function cos() {
  15.    $cos += 3;
  16.  }
  17. }
  18. $moja = new moja;
  19. $moja -> cos(); // wyświetli 1
  20. $moja2 -> cos(); // wyświetli 4 bo 1 było dodane do bazy wcześniej
  21. ?>


Jeśli ktoś wie jak coś takiego zrobić prosze o pomoc (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
matix
post
Post #2





Grupa: Zarejestrowani
Postów: 278
Pomógł: 10
Dołączył: 13.02.2007
Skąd: Rybnik

Ostrzeżenie: (0%)
-----


Może wykorzystaj singleton:

  1. <?
  2. class Register {
  3.  
  4.    private static
  5.        $oInstance = null;
  6.        
  7.    private
  8.        $aGet = array();
  9.        
  10.    public function __set($sName, $sValue)
  11.    {
  12.        $this->aGet->$sName = $sValue;
  13.    }
  14.    
  15.    public function __get($sName)
  16.    {
  17.        return $this->aGet->$sName;
  18.    }
  19.        
  20.    public function singleton()
  21.    {
  22.        if (self$oInstance == null)
  23.            self$oInstance = new self();
  24.            
  25.        return self$oInstance;
  26.    }
  27. }
  28.  
  29. abstract class Db {
  30.  
  31.    protected
  32.            $oEngine = null;
  33.  
  34.    public function __construct()
  35.    {
  36.        $this->oEngine = Registersingleton();
  37.    }
  38.    
  39.    public function get()
  40.    {
  41.        return $this->oEngine->zmienna;
  42.    }
  43.  
  44. }
  45.  
  46. class MojaBaza extends Db {
  47.  
  48.    public function add ($ile)
  49.    {
  50.        $this->oEngine->zmienna += $ile;
  51.    }
  52.  
  53. }
  54.  
  55.  
  56. class MojaBazaSiedem extends Db {
  57.  
  58.    public function add ($ile)
  59.    {
  60.        $this->oEngine->zmienna += $ile*5;
  61.    }
  62.  
  63. }
  64.  
  65. $oDb_1 = new MojaBaza;
  66. $oDb_2 = new MojaBazaSiedem;
  67.  
  68. $oDb_1->add (5);
  69. $oDb_2->add (3);
  70.  
  71. echo $oDb_1->get();
  72.  
  73. ?>


Pisane jako schemat, nie sprawdzałem, ale powinno działać.

Pzdr.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 11.10.2025 - 22:21