Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Przechowywanie identyfikatora połączenia., Klasa MySQL
starach
post 23.01.2007, 13:11:42
Post #1





Grupa: Zarejestrowani
Postów: 999
Pomógł: 30
Dołączył: 14.01.2007
Skąd: wiesz ?

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


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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
cornholio666
post 23.01.2007, 13:22:57
Post #2





Grupa: Zarejestrowani
Postów: 472
Pomógł: 8
Dołączył: 14.03.2004
Skąd: Rzeszów

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


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. ?>


--------------------
I need TP for my bunghole!!!

Mój nowy przyjaciel - tytanowa płytka na stałe
------------------------------------------------------
AEGEE, kwiaciarnia rzeszów , notariusz rzeszów, zakład krawiecki rzeszów, paweł jakubowicz
Go to the top of the page
+Quote Post
starach
post 23.01.2007, 13:28:42
Post #3





Grupa: Zarejestrowani
Postów: 999
Pomógł: 30
Dołączył: 14.01.2007
Skąd: wiesz ?

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


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.
Go to the top of the page
+Quote Post
Cysiaczek
post 23.01.2007, 13:31:31
Post #4





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Szukaj pod hasłem Singleton lub składowe statyczne - na forum jest multum - coś znajdziesz.

Pozdrawiam.


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
starach
post 23.01.2007, 14:36:01
Post #5





Grupa: Zarejestrowani
Postów: 999
Pomógł: 30
Dołączył: 14.01.2007
Skąd: wiesz ?

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


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 ?
Go to the top of the page
+Quote Post
Cysiaczek
post 23.01.2007, 14:45:43
Post #6





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




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.


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
dr_bonzo
post 23.01.2007, 21:02:10
Post #7





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Przedszkole --> php


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 06:22