Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> lista inicjująca aka preambuła
zajonc
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 18.01.2010

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


czy istnieje w php takie coś jak lista inicjująca jak w C++ ?

chciałbym mieć jedną klasę obsługującą baze danych:
  1. class mysql
  2. {
  3. public function __construct ( $host, $user, $pass, $base )
  4. {
  5. $this->handle = mysql_connect ( $host, $user, $pass );
  6. mysql_select_db ( $base );
  7. }
  8. }


i drugą dziedziczącą po niej do obsługi użytkownika
  1. class user extends mysql
  2. {
  3. public function __construct ( $host, $user, $pass, $base )
  4. {
  5. }
  6. }


niestety nie wiem jak to zrobić. w C++ używa się preambuły, do wywołania konstruktora innego niż domyślny.
może są jakieś inne rozwiązania tego problemu ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
Spawnm
post
Post #2





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




W php zrobisz to tak:
  1. class user extends db {
  2. function __construct(){
  3. parent::__construct();
  4. //kod
  5. }
  6. }
Powód edycji: [Spawnm]:
Go to the top of the page
+Quote Post
pejott
post
Post #3





Grupa: Zarejestrowani
Postów: 81
Pomógł: 4
Dołączył: 15.02.2009

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


Co to za herezje żeby obiekt klasy User dziedzyczył po klasie do obsługi bazy danych...
Klasa User powinna być plain old php object czyli klasa obiektu, ktory reprezentuje użytkownika.
Nie powinna wykonywać na nim żadnych operacji CRUD.

Ale jeśli się dopiero uczysz to...
W mega telegraficznym skrócie może to wyglądać tak, aczkolwiek nie powinno.

  1. class User
  2. {
  3. protected $db;
  4.  
  5. public function _construct(DatabaseManager $db)
  6. {
  7. $this->db = $db;
  8. }
  9. }


I...

  1. $db = new DatabaseManager();
  2. $user = new User($db);


Przy tworzeniu obiektu User wstrzykujesz klasę obsługi bazy danych do konstruktora.
Mało realny i elegancki przykład, ale to zamierzone by nie zamieszać, a naprowadzić.

Pozdrawiam.
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 Aktualny czas: 19.08.2025 - 06:25