Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Rozszerzenie klasy, Czyli co i jak...
Fifi209
post
Post #1





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Witam!

Potrzebuję podzielić widok, na kilka klas. Dokładniej chcę mieć główny widok i klasy które rozszerzą jego możliwości.

Nie byłoby problemu, bo mógłbym nawet dziedziczyć tylko, że potrzebuję użyć np. 3-4 rozszerzeń naraz.

Przykłady rozszerzeń:
- Klasa obsługująca szablony (parsowanie etc.)
- Klasa parsująca bb-code
- Klasa tworząca formularze

Sam wymyśliłem coś takiego:

Klasa widok, ma metodę:
  1. public function _load($name) {
  2. if ($this->$name) {
  3. return $this->$name;
  4. }else{
  5. $temp = __CLASS__ .'_'. $name;
  6. if (file_exists('modules/'.$temp.'.php')) {
  7. include_once('modules/'.$temp.'.php');
  8. return $this->$name = new $temp;
  9. }else{
  10. return false;
  11. }
  12. }
  13. }


Problem polega na tym, że używanie tak wczytanego modułu jest niewygodne, bo muszę robić to np. tak:
  1. $view->template->metoda();


Od razu tutaj zaznaczę, że mam magiczną metodę __get() dlatego odwołuję się poprzez $view->template.

Co w tym niewygodnego? Muszę wszystko zwracać returnami, bo inaczej nic w widoku nie zapiszę.

Dokładniej:

  1.  
  2. $view = view::create(); // Zwraca obiekt, wzorzec singleton
  3. $view->_load('template');
  4.  
  5. // działania na template np.
  6. $view->template->_loadFile('tpl/index.tpl');
  7.  
  8. // Powiedzmy podmieniamy co mamy podmienić w szablonie
  9. $podmiana = array('title' => 'test', 'content' => 'testy');
  10.  
  11. foreach ($podmiana as $key => $value) {
  12. $view->template->add($key, $value);
  13. }
  14.  
  15. // zapis wyniku działania modułu template
  16. $view->save($view->template); // i to mi się nie podoba, dałem sobie


To co mi się nie podoba, działa akurat na zasadzie wywołania __toString, który uruchamia parser template.
Z template jest najmniejszy problem, gorzej z robieniem formów... Gdzie np. każdego inputa muszę zapisać do zmiennej i potem $view->save($zmiennaZinputem)

Jak za słabo objaśniłem to czekam na pytania. haha.gif


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post

Posty w temacie


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: 21.08.2025 - 09:16