Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przechowywanie identyfikatora połączenia.
Forum PHP.pl > Forum > PHP
starach
Witam.
Mam klasę obsługującą połączenia z bazą danych.
Oprócz tego mam kilka innych klas które mają wykorzystywać w.w. klasę MySQL.
Nie mogę przecież dla każdej klasy inicjować nowego połączenia do bazy.
Jak mam przechowywać identyfikator połączenia żeby, nie musiał nawiązywać połączenia za każdym razem kiedy będę chciał z innej klasy odwołać się do metody query() pobierającej dane z bazy.
cornholio666
Identyfikator polaczenia mozesz przekazac w konstruktorze

  1. <?php
  2. private $db;
  3.  
  4. public function __construct($db){
  5.  $this->db = $db;
  6.  
  7. }
  8. ?>


I pozniej sie odolywac do pola

  1. <?php
  2. $this->db;
  3. ?>
starach
Hmm to też mnie nie satysfakcjonuje.
Nie można by było zapisać tego identyfikatora do jakiejś zewnętrznej zmiennej globalnej ?
Czy można w klasach(sie MySQL ) tworzyć zmiennych GLOBALNYCH ?
Wtedy na przykład w klasie mysql sprawdzałbym podczas użycia metody query() sprawdzałbym czy zmienna z identyfikatorem jest ustawiona i wykonywał odpowiednie czynności w zależności od tego czy jest czy jej nie ma.
Nie wiem tylko czy mogę zadeklarować zmienną globalną z klasy czy da się to zrobić i czy jest to bezpieczne.
To znaczy czy użytkownik nie będzie miał dostępu do identyfikatora połączenia i czy ni będzie go mógł wykorzystać żeby połączyć się ze swojego skryptu.
Cysiaczek
Szukaj pod hasłem Singleton lub składowe statyczne - na forum jest multum - coś znajdziesz.

Pozdrawiam.
starach
Chyba już rozumiem.
  1. <?php
  2. //plik single_test5_php5.php
  3.  
  4. class test5 {
  5.  public $zmienna;
  6.  
  7.  protected __construct() {} // I oto nasza sztuczka
  8.  
  9.  public function singleton()
  10.  {
  11. static $instance;
  12. if(!isset($instance)) {
  13.  $instance = new test5;
  14. }
  15. return $instance;
  16.  }
  17. }
  18.  
  19. ?>
  20.  
  21. <?php
  22. //plik: test5.php
  23.  
  24. include('single_test5_php5.php'); // Includujemy powyzszy plik
  25.  
  26. $single1 = test5::singleton(); // Tworzymy 1 egzemplarz
  27. $single1->zmienna = 500;
  28. $single2 = test5::singleton(); // I drugi
  29. echo $single2->zmienna; // Wydrukuje 500
  30. // $single3 = new test5; // Wyrzuci blad (Fatal error) z braku dostepu do konstruktora
  31. ?>

Czyli $single1 będzie widoczne też w każdym miejscu skryptu.
Czy muszę ją przekazywać do innych obiektów czy mogę się bezpośrednio odwołać do tej zmiennej z wnętrza innej klasy ?
Cysiaczek
Chodzi o to, żebyś miał dostęp do tego samego obiektu klasy test5, poprzez wywołanie jej statycznej metody singleton();, a nie zmienną globalną
  1. <?php
  2. $obiekt=test5::singleton();
  3. ?>


Przeanalizuj ostatni post http://forum.php.pl/index.php?showtopic=59...mp;#entry324013

Pozdrawiam.
dr_bonzo
Przedszkole --> php
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.