Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Obiektowa obsługa zdarzeń
become
post 2.12.2007, 20:27:05
Post #1





Grupa: Zarejestrowani
Postów: 88
Pomógł: 0
Dołączył: 12.01.2007

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


czytam PHP5 Zaawansowane Programowanie.

I właśnie chciałbym rozwinąć wątek "Obiektowej obsługi zdarzeń".

Obecnie, przy programowaniu proceduralnym tworzylem system na zasadzie:
kontroler + funkcja + dodatkowe parametry

które stanowiły element adresow url.

np. c=user ; f=articleList

w tablicy user trzymalem dostepne funkcje dla tego kontrolera czyli np. articleList,articleAdd itp.

przy pobieraniu parametrów sprawdzalem czy kontroler i funkcja są dostepne w systemie - jezeli tak, to includowalem plik kontrolera (controlers/user.php) a funkcję przekazywałem do instrukcji switch, na podstawie której ładowałem plik z kodem obsługującym funkcję.

Wygląda to mniej więcej tak:

index.php:
  1. <?php
  2. $aCTRL=array ('user','site');
  3.  
  4.  $aFUNC=array(
  5. 'site'=>'start,info,contact',
  6. 'user'=>'info,articleList,articleAdd'
  7.  );
  8.  
  9.  #domysle parametry kontrolera
  10.  $ctrl='site';
  11.  $func='start';
  12.  
  13.  if (isset($_GET['c']) {
  14. $ctrl=$_GET['c'];
  15.  }
  16.  
  17.  if (isset($_GET['f']) {
  18. $func=$_GET['f'];
  19.  }
  20.  
  21.  # jezeli sa okreslone menu i funkcja to sprawdzamy czy są dostępne w systemie
  22.  // jezeli kontroler nie istnieje to bierzemy domyslny
  23.  if (!in_array($ctrl, $aCTRL)) $ctrl="site";
  24.  // jezeli funkcja nie istnieje w kontrolerze to bierzemy pierwsza dostepna z kontr
    olera
  25.  if (!in_array($func, explode(",",$aFUNC[$ctrl]))) {
  26.  $aFunc=explode(",",$aFUNC[$ctrl]);
  27.  $func=$aFunc[0];
  28.  } else {
  29. # kontroler wyswietlania komunikatow
  30. $ctrl="messages";
  31. $func="no-element";
  32.  };
  33.  
  34.  include "controlers/".$ctrl.".php";
  35. ?>


user.php
  1. <?php
  2. switch ($func) {
  3. case 'info': include 'user.info.php'; break;
  4. case 'articleList': include 'user.articleList.php'; break;
  5. case 'articleAdd': include 'user.articleAdd.php'; break;
  6.  }
  7. ?>


Niedawno nawet przeczytałem gdzieś, że ten sposób podziału nawet jakoś się nazywa (od nazwiska jego twórcy), aczkolwiek dowiedzialem sie o tym znacznie pozniej. Najwyrazniej wpadlem na cos, co juz kiedys ktos wymyslil.
Nie wazne.

Teraz czas na OOP. Jakie są wasze doświadczenia przy tworzeniu klas kontrolujących zdarzenia ?
Gdzie można coś na ten temat jeszcze poczytać ?


--------------------
Darmowy Kreator Stron Internetowych
NR1 W Polsce - Portal Społecznościowo-Randkowy
Pozycjonowanie - najlepsze polskie narzędzie
Go to the top of the page
+Quote Post
Cysiaczek
post 2.12.2007, 21:35:12
Post #2





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




1. Przejrzyj Temat: MVC
2. Jeszcze więcej poszukaj pod hasłami Router, Request Resolver, Dispatcher, Front Controller, Application Controller.

Pozdrawiam.


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
Berni
post 27.12.2007, 16:00:16
Post #3





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 8.10.2002

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


Jeśli czytać Programowanie Zaawansowane w PHP5 to na stronie 204 zaczyna się rozdział "Programowanie oparte na zdarzeniach" smile.gif


--------------------
Masz zlecenie? Zapraszam programista php.
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 Wersja Lo-Fi Aktualny czas: 5.07.2025 - 21:16