Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: lista inicjująca aka preambuła
Forum PHP.pl > Forum > PHP > Object-oriented programming
zajonc
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 ?
Spawnm
W php zrobisz to tak:
  1. class user extends db {
  2. function __construct(){
  3. parent::__construct();
  4. //kod
  5. }
  6. }
pejott
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.
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.