Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Obiektowa obsługa zdarzeń
Forum PHP.pl > Forum > PHP > Object-oriented programming
become
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ć ?
Cysiaczek
1. Przejrzyj Temat: MVC
2. Jeszcze więcej poszukaj pod hasłami Router, Request Resolver, Dispatcher, Front Controller, Application Controller.

Pozdrawiam.
Berni
Jeśli czytać Programowanie Zaawansowane w PHP5 to na stronie 204 zaczyna się rozdział "Programowanie oparte na zdarzeniach" smile.gif
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.