Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Dostęp do obiektu A z obiektu B, gdzie oba są w obiekcie C
SpokoJny_
post
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 24.02.2010

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


Witam!

Oto kod:

  1. <?php
  2. class A{
  3.  
  4.  
  5. }
  6. class B{
  7. //Jak uzyskać dostęp do obiektu klasy A w obiekcie klasy B, gdzie oba są polami obiektu klasy C?
  8. }
  9. class C{
  10. private $A;
  11. private $B;
  12.  
  13. public function __construct(){
  14. $this->A = new A();
  15. $this->B = new B();
  16. }
  17. }
  18. ?>




Na myśl przyszedł mi sposób:
  1. <?php
  2. class A{
  3.  
  4. }
  5. class B{
  6.  
  7. public function __construct($obj){
  8. //piszemy $obj i mamy dostęp do publicznych metod i pól obiektu klasy A,
  9. //który jest polem obiektu klasy C
  10. }
  11. }
  12. class C{
  13. private $A;
  14. private $B;
  15. public function __construct(){
  16. $this->A = new A();
  17. $this->B = new B($this->A); //Przekazujemy konstruktorowi obiektu B dostęp do obiektu A,
  18. // gdzie oba są polami obiektu C
  19. }
  20.  
  21. }
  22. $obj = new C();
  23.  
  24. ?>


Czy istnieje jakaś inna możliwość?
W moim skrypcie będę korzystał z obiektu klasy A w wielu innych obiektach, gdzie wszystkie są zawarte w obiekcie klasy
C i nie chciałbym za każdym razem przekazywać do konstruktora innych obiektów referencji do obiektu A.

Innym rozwiązaniem może być stała klasowa w postaci obiektu, wtedy mógłbym się odwoływać A::obj->costam.

Ten post edytował SpokoJny_ 26.08.2010, 16:14:46
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
SpokoJny_
post
Post #2





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 24.02.2010

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


Ja używam tego:

  1. <?php
  2.  
  3. class Connector{
  4.  
  5. static private $host;
  6. static private $user;
  7. static private $password;
  8. static private $database;
  9.  
  10. static public $connection;
  11.  
  12.  
  13. public static function connect($host, $user, $password, $database){
  14.  
  15. self::$host = $host;
  16. self::$user = $user;
  17. self::$password = $password;
  18. self::$database = $database;
  19.  
  20. if(self::$connection)
  21. return false;
  22.  
  23. $tempconnection = new mysqli(self::$host, self::$user, self::$password, self::$database);
  24.  
  25. if(mysqli_connect_errno())
  26. throw new Exception("Database connection error.");
  27.  
  28. self::$connection = $tempconnection;
  29.  
  30.  
  31. }
  32.  
  33. public static function convertresult(&$result){
  34.  
  35. $arr = Array();
  36.  
  37. while($row = $result->fetch_row()){
  38. $arr[] = $row;
  39.  
  40. }
  41.  
  42. return $arr;
  43.  
  44. }
  45.  
  46.  
  47. }
  48. ?>


Trochę staroświecki sposób łączenia się z bazą no ale to nie jest głównym wątkiem:

Używasz tego po prostu w momencie, gdy twój kontroler (np. główny plik index.php) otrzymuje żądanie, w którym trzeba bazy danych użyć, wtedy:

  1. ...
  2. Connector::connect('localhost', 'user', 'pass', 'db');
  3. ...


i w każdej innej funkcji/klasie masz swobodne dojście do połączenia.
  1. ...
  2. $result = Connector::$connection->query("moje zapytanie");
  3. //i ewentualnie
  4. $result = Connector::convertresult($result);
  5. ...




Ten post edytował SpokoJny_ 2.09.2010, 21:09:39
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: 9.10.2025 - 08:47