Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Pobierane nazwy w konstruktorze w klasie rozszerzanej wyżej
rafalp
post
Post #1





Grupa: Zarejestrowani
Postów: 224
Pomógł: 18
Dołączył: 4.02.2003
Skąd: Częstochowa

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


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"

Ten post edytował rafalp 27.01.2013, 19:39:24
Go to the top of the page
+Quote Post
Quantum
post
Post #2





Grupa: Zarejestrowani
Postów: 450
Pomógł: 84
Dołączył: 27.11.2008
Skąd: Warszawa

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


get_parent_class($this)

@down
faktycznie, nie doczytałem do końca (IMG:style_emoticons/default/smile.gif)

Ten post edytował Quantum 27.01.2013, 20:05:59
Go to the top of the page
+Quote Post
Kofel
post
Post #3





Grupa: Zarejestrowani
Postów: 99
Pomógł: 22
Dołączył: 14.12.2007
Skąd: Wyszków

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


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


Ten post edytował Kofel 27.01.2013, 20:03:46
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 14.09.2025 - 20:19