Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Pdo dołączanie klasy ?
tabbi
post 30.01.2011, 02:16:26
Post #1





Grupa: Zarejestrowani
Postów: 150
Pomógł: 3
Dołączył: 30.10.2010

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


Witam,

chciałbym dołączyć sam wskaźnik do bazy PDO na jakiej zasadzie mam dołączać tą klase w innych klasach żeby móc operować na zapytaniach do bazy mysql?

np . za pomoca instancji czy jak ?
Go to the top of the page
+Quote Post
yevaud
post 30.01.2011, 03:40:41
Post #2





Grupa: Zarejestrowani
Postów: 471
Pomógł: 89
Dołączył: 29.07.2008
Skąd: Warszawa

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


musisz w jakis sposob przekazac smile.gif

a w konstruktorze
b w metodzie inicjalizujacej polaczenie obiektu z baza
c singletonem
Go to the top of the page
+Quote Post
Crozin
post 30.01.2011, 10:51:29
Post #3





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


W PHP nie masz wskaźników - są jedynie referencje.

Jedyny sensowny sposób to przekazanie tej referencje w konstruktorze obiektu:
  1. $pdo = new PDO(...);
  2. $obj = new MyObject($pdo);


Cytat
b w metodzie inicjalizujacej polaczenie obiektu z baza
c singletonem
Ad. b: W jaki niby sposób utworzenie nowego obiektu ma przekazać istniejący?
Ad. c: Weź nawet z takimi debilnymi pomysłami nie wyskakuj. winksmiley.jpg
Go to the top of the page
+Quote Post
tabbi
post 30.01.2011, 12:29:03
Post #4





Grupa: Zarejestrowani
Postów: 150
Pomógł: 3
Dołączył: 30.10.2010

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


a jak to potem wyglada w konstruktorze klasy w ktorej zostaje przekazana referencja obiektu ?

  1. Class Pliki{
  2.  
  3. private $dbh = null;
  4.  
  5. function __construct(&$dbh){
  6.  
  7. this->dbh=$dbh; ? TAK questionmark.gif
  8.  
  9. }
  10. }


i CO Zrobić jeśli np. w klasie ktora jest instancja takze chciałbym wykonywać polecenia z mysql wtedy odpowienio musze przekazać Referencje do getInstance ?
Go to the top of the page
+Quote Post
Mephistofeles
post 30.01.2011, 12:48:01
Post #5





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

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


W PHP obiekty są domyślnie przekazywane przez referencję, możesz pominąć &.
Go to the top of the page
+Quote Post
Noidea
post 30.01.2011, 12:51:56
Post #6





Grupa: Zarejestrowani
Postów: 226
Pomógł: 61
Dołączył: 20.08.2010

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


Od PHP 5 wszystkie obiekty przekazywane są przez referencję, więc nie potrzebujesz &. No i zgubiłeś jednego dolara.
  1. Class Pliki {
  2.  
  3. private $dbh = null;
  4.  
  5. function __construct( $dbh ) {
  6.  
  7. $this->dbh=$dbh; // TAK.
  8.  
  9. }
  10. }



Cytat
CO Zrobić jeśli np. w klasie ktora jest instancja takze chciałbym wykonywać polecenia z mysql wtedy odpowienio musze przekazać Referencje do getInstance

Najpierw musiałbyś zapoznać się z nazewnictwem w programowaniu obiektowym, a dopiero później zadawać takie pytania, bo na razie nie mają one zbyt dużego sensu (np. "klasa która jest instancją")


--------------------
Go to the top of the page
+Quote Post
yevaud
post 30.01.2011, 13:04:01
Post #7





Grupa: Zarejestrowani
Postów: 471
Pomógł: 89
Dołączył: 29.07.2008
Skąd: Warszawa

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


Cytat(Crozin @ 30.01.2011, 10:51:29 ) *
Jedyny sensowny sposób to przekazanie tej referencje w konstruktorze obiektu:
  1. $pdo = new PDO(...);
  2. $obj = new MyObject($pdo);

Ad. b: W jaki niby sposób utworzenie nowego obiektu ma przekazać istniejący?

z obiektami jest roznie. Czasami obiekt potrzebuje polaczenia z baza od razu, a czasem jest to niepotrzebne, a wrecz nieporzadane. Wtedy uzywasz konstrukcji w tym stylu
$this->connectWithDb($db);
i o to mi chodzilo. Jasne ze wszyscy juz mamy nastukane do glowy jak ma wygladac ORM, ale to naprawde nie musi tak wygladac smile.gif inne rozwiazanie moze byc rownie dobre, a zachowywac sie zupelnie inaczej.
Wezmy tez pod uwage ze obiekt moze chciec cos zrobic w bazie juz na wejsciu, wtedy przekazywanie bazy w konstruktorze ma duzo mniej sensu, bo rzucanie wyjatku z konstruktora to sredni pomysl.

Cytat
Ad. c: Weź nawet z takimi debilnymi pomysłami nie wyskakuj. winksmiley.jpg

e tam whatever winksmiley.jpg wszedzie Ci ortodoksi ostatnio
Go to the top of the page
+Quote Post
tabbi
post 30.01.2011, 13:41:39
Post #8





Grupa: Zarejestrowani
Postów: 150
Pomógł: 3
Dołączył: 30.10.2010

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


Witam,

zrobiłem tak jak wyżej i niestety wypisuje mi błąd Cannot redeclare class Mysql

Klasa mysql wyglada takL:

  1. Class Mysql{
  2.  
  3. public $dbh = null;
  4.  
  5. function __construct(){
  6.  
  7. try{
  8.  
  9. $this->dbh=new PDO(....)
  10. $this->dbh-> setAttribute(...)
  11. }
  12.  
  13. catch{
  14.  
  15. }
  16.  
  17. }
  18. }


Ten post edytował tabbi 30.01.2011, 13:43:46
Go to the top of the page
+Quote Post
Noidea
post 30.01.2011, 13:57:22
Post #9





Grupa: Zarejestrowani
Postów: 226
Pomógł: 61
Dołączył: 20.08.2010

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


http://phpedia.pl/wiki/Cannot_redeclare_class_foo%28%29


--------------------
Go to the top of the page
+Quote Post
Spawnm
post 30.01.2011, 14:12:25
Post #10





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




Przenoszę do przedszkola.
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: 14.08.2025 - 06:18