Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Dostęp do prywatnych pól z innej klasy.
klinski
post
Post #1





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 22.03.2007

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


Witam,

Chciałbym się dowiedzieć czy jest możliwe w php coś takiego. Mam dwie klasy.

  1. <?php
  2. class pierwsza{
  3.  
  4.    private $p_1;
  5.        private $p_2;
  6.  
  7. }
  8.    
  9. class druga {
  10.  
  11.        private $pierwsza;
  12.    
  13.        $this -> pierwsza = new pierwsza;
  14.    //mozliwosc zapisu pol prywatny klasy "pierwsza"
  15.    
  16. }
  17. ?>


W klasie pierwsza mam pola prywatne. Czy jest możliwe aby z klasy drugiej i tylko z tej klasy była możliwość zapisu pól prywatnych klasy pierwsza?
Dziedziczenie raczej nie może być bo te klasy nie maja takiej relacji ze sobą.

Ten post edytował klinski 16.09.2008, 08:07:07
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
phpion
post
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Dokładnie tak jak pisze ~dr_bonzo. Napisz sobie własne tzw. settery i gettery, przykładowo:
  1. <?php
  2. class Demo {
  3.    private $version;
  4.    
  5.    public function getVersion() {
  6.        return $this->version;
  7.    }
  8.    
  9.    public function setVersion($v) {
  10.        $this->version = $v;
  11.    }
  12. }
  13. ?>

Aczkolwiek to nie rozwiązuje Twojego problemu z pierwszego postu. Możesz przekazywać źródło wywołania metody i na tej podstawie (zwykły warunek) określić czy dany obiekt (z którego nadeszło żądanie) ma prawo do wykonania danej operacji.
  1. <?php
  2. public function setVersion($v, $source) {
  3.        // jesli zadanie pochodzi z poprawnego zrodla...
  4.        if ($source instanceof Source_Allowed) {
  5.            $this->version = $v;
  6.        }
  7.        // ...a jesli nie
  8.        else {
  9.            // rzuc wyjatek lub nic nie rob
  10.        }
  11.    }
  12. ?>


Ten post edytował phpion 16.09.2008, 10:00:54
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: 7.10.2025 - 11:51