Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Mojavi 2.0 + AdoDB filter
Meijin
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 24.02.2005
Skąd: Gdańsk

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


Potrzebowałbym działający przykład wykorzystania filtra AdoDB do wersji 2 mojavi. Na forum mojavi nie znalazłem nic pełnego.

Jak w ogóle tworzycie warstwę modelu z użyciem Mojavi ?


--------------------
Wszystko co doskonałe, dojrzewa powoli. /A. Schopenhauer/
PHP już mnie powoli wk*rwia. /Bolesław Chrobry, XI w./
Go to the top of the page
+Quote Post
Leezard
post
Post #2





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 19.09.2004
Skąd: Uć

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


Ja uzywam Mojavi 2.0 i ADOdb takze mam nadizeje ze moge pomoc. Tzn nie wiem czy chodzi ci o filtr globalny do bazy danych, czy chcesz tworzyc polaczenia bezposrednio w modelu. Z tego co wiem (z opinii z forum) to ten drugi sposob jest lepszy - wprowadza calkowita niezaleznosc modelu od innych czesci aplikacji.

W mojavi 2.0 nie ma czegosc takiego jak model, dlatego tworze wlasne klasy (nie extenduje niczego, nic nie przeciazam), wrzucam je do LIB_DIR/models, a pozniej w akcji i widoku odpowiednio includuje plik i dzialam na modelu. Aha no i jeszcze ostatnio podopisywalem sobie Singletony do moich modeli.

BTW

na forum Mojavi jest chyba gotowy filtr do ADOdb, ale przestalem go uzywac bo wtedy model nie byl calkowicie niezalezny, bo jako parametr w konstruktorze musial przyjnowac id polaczenia, a w momencie jesli bysmy chcieli zamienic baze na np XML to polaczenie nie jest nam potrzebne.

jak wroce do domu z zajec to podrzuce ci tego filtra jak chcesz

Ten post edytował Leezard 14.03.2005, 08:51:28


--------------------
Nie rób nic na siłę - weź większy młotek ;)
Go to the top of the page
+Quote Post
Meijin
post
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 24.02.2005
Skąd: Gdańsk

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


Cytat(Leezard @ 2005-03-14 07:49:34)
jak wroce do domu z zajec to podrzuce ci tego filtra jak chcesz

Będę bardzo wdzięczny.

Pozdrawiam.


--------------------
Wszystko co doskonałe, dojrzewa powoli. /A. Schopenhauer/
PHP już mnie powoli wk*rwia. /Bolesław Chrobry, XI w./
Go to the top of the page
+Quote Post
Leezard
post
Post #4





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 19.09.2004
Skąd: Uć

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


no wiec tak:

1. w webapp/lib wrzucilem caly katalog adodb
2. do webapp/config wrzucilem config.Adodb,php (zawartosc nizej)
3. do katalogu opt/filters (powyzej webapp) wrzucilem AdodbFilter.class.php

a teraz pliki:

config.Adodb.php:
  1. <?php
  2.  
  3. // ----- ADODB INITIALIZATON -----
  4.  
  5. define('ADODB_DIR', '/home/leezard/framework/webapp/lib/adodb/');
  6. define('ADODB_CACHE_DIR', '/home/leezard/framework/webapp/cache');
  7. define('ADODB_DRIVER', 'mysql');
  8. define('ADODB_DB_HOST', 'localhost');
  9. define('ADODB_DB_USER', 'user');
  10. define('ADODB_DB_PASS', 'password');
  11. define('ADODB_DB_NAME', 'database');
  12. require_once(ADODB_DIR .'adodb.inc.php');
  13.  
  14. ?>


AdodbFilter.class.php:
  1. <?php
  2.  
  3. class AdodbFilter extends Filter
  4. {
  5. function execute (&$filterChain, &$controller, &$request, &$user)
  6. {
  7.  $loaded = $request->getAttribute('AdodbFilter');
  8.  if ($loaded == NULL)
  9.  {
  10. require_once(ADODB_DIR . 'adodb.inc.php');
  11.  
  12. $db_host = ( isset($this->params['host']) )
  13.  ? $this->params['host']
  14.  : ADODB_DB_HOST;
  15.  
  16. $db_user = ( isset($this->params['user']) )
  17.  ? $this->params['user']
  18.  : ADODB_DB_USER;
  19.  
  20. $db_pass = ( isset($this->params['pass']) )
  21.  ? $this->params['pass']
  22.  : ADODB_DB_PASS;
  23.  
  24. $db_db = ( isset($this->params['db']) )
  25.  ? $this->params['db']
  26.  : ADODB_DB_NAME;
  27.  
  28. $request->setAttribute('AdodbFilter', TRUE);
  29. $ADODB_CACHE_DIR = ADODB_CACHE_DIR;
  30. $dbconn = NewADOConnection(ADODB_DRIVER);
  31. $res = $dbconn->Connect($db_host, $db_user, $db_pass, $db_db);
  32. if ($res == FALSE)
  33. {
  34. // przekierowanie jak sie nie udalo polaczyc
  35. } else
  36. {
  37.  $request->setAttributeByRef('dbconn', $dbconn);
  38.  $filterChain->execute($controller, $request, $user);
  39.  $dbconn->Close();
  40. }
  41. $request->removeAttribute('AdodbFilter');
  42.  } else
  43.  {
  44. $filterChain->execute($controller, $request, $user);
  45.  }
  46. }
  47. }
  48.  
  49. ?>


mala zmiana w webapp/GlobalFilterList.class.php (ja mam jeszce filtr ExecutionTime):
  1. <?php
  2.  
  3. require_once(FILTER_DIR . 'ExecutionTimeFilter.class.php');
  4. require_once(FILTER_DIR . 'AdodbFilter.class.php');
  5.  
  6. class GlobalFilterList extends FilterList
  7. {
  8.  
  9. /**
  10.  * Create a new GlobalFilterList instance.
  11.  *
  12.  * @param controller Controller instance.
  13.  */
  14.  
  15. function & GlobalFilterList ()
  16. {
  17. $this->filters['ExecutionTimeFilter'] =& new ExecutionTimeFilter;
  18. $this->filters['AdodbFilter'] =& new AdodbFilter;
  19.  }
  20.  
  21. /**
  22.  * Register a filter.
  23.  *
  24.  * @param filterChain FilterChain instance.
  25.  */
  26. function registerFilters (&$filterChain, &$controller, &$request, &$user)
  27. {
  28.  /* register filter instances here */
  29.  
  30.  $filterChain->register($this->filters['ExecutionTimeFilter']);
  31.  $filterChain->register($this->filters['AdodbFilter']);
  32. }
  33.  
  34. }
  35.  
  36. ?>


i w config.php w webapp (dodaj takie cos)
w katalogu webapp/config trzymam configi dla Adodb, Smarty i innych rzeczy (tak zeby byly w jednym miejscu)
  1. <?php
  2.  
  3. define('MOJAVI_CFG_DIR', '/home/leezard/framework/webapp/config/');
  4. require_once(MOJAVI_CFG_DIR . 'config.Adodb.php');
  5.  
  6. ?>



no i zmien sciezki w configu adodb winksmiley.jpg powinno dzialac winksmiley.jpg
aha no i w akcji obiekt adodb pobeirasz przez $request->getAttribute('dbconn');

pozdrawiam

Ten post edytował Leezard 14.03.2005, 17:40:41


--------------------
Nie rób nic na siłę - weź większy młotek ;)
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 Aktualny czas: 19.08.2025 - 20:15