Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pobierane nazwy w konstruktorze w klasie rozszerzanej wyżej
Forum PHP.pl > Forum > PHP
rafalp
Mam taką zagwostkę:

  1. // Własne rozszerzenie klasy bazy danych
  2. class MyDb_Model extends Model {
  3.  
  4. // Nazwa tabeli bazy
  5. protected $table_name = '';
  6.  
  7. public function __construct() {
  8. // $this->table_name = nie wiem jak znaleźć tą nazwę tabeli
  9. }
  10.  
  11.  
  12. }
  13.  
  14. // Używanie tego rozszerzenia we wszystkich tabelach np.
  15. class Users_Model extends MyDb_Model {
  16.  
  17. protected $table_name = 'users';
  18.  
  19. public function __construct() {
  20. // nie chce tutaj w każdym modelu wpisywać coś w stylu $this->table_name = get_class()
  21. }
  22.  
  23.  
  24. }
  25.  
  26. // Używanie tych klas
  27. $model = new Users_Model();



Jak zautomatyzować aby $table_name nie trzeba było wpisywać samemu tylko aby została generowana sama na podstawie nazwy modelu ("Users").
Chodzi o to aby nie dopisywać ewentualnego generowania $table_name w każdym konstruktorze "Users_Model" (których odpowiedników jest wiele) tylko aby szło to zrobić jednorazowo w wyższej klasie "MyDb_Model"
Quantum
get_parent_class($this)

@down
faktycznie, nie doczytałem do końca smile.gif
Kofel
Tadam:

  1. <?php
  2.  
  3. // Własne rozszerzenie klasy bazy danych
  4. class MyDb_Model extends Model {
  5. public function __construct() {
  6. $this->table_name = strtolower( str_replace( '_Model', '', get_class( $this ) ) );
  7. }
  8. }
  9.  
  10. // Używanie tego rozszerzenia we wszystkich tabelach np.
  11. class Users_Model extends MyDb_Model {
  12. }
  13.  
  14. // Używanie tych klas
  15. $model = new Users_Model();
  16. echo $model->table_name; // => users
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.