Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Czy to jest "w porządku"?
byther
post 22.10.2004, 07:27:25
Post #1





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 15.06.2004
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


Najlepiej podam żywy przykład. Najpierw stwórzmy strukturę...
Kod
#!/bin/bash
mkdir public templates templates_c public/action public/view
chmod 777 templates_c
touch index.php public/action/akcja.php public/view/index.php templates/page.tpl


A zawartość to:

/public/action/akcja.php
  1. <?php
  2. $tpl->assign( 'test', true );
  3. return 'view/index';
  4. ?>


/public/view/index.php
  1. <?php
  2. $template = 'page.tpl';
  3. ?>


/templates/page.tpl
  1. <a href="index.php">Indeks</a> |
  2. <a href="index.php?q=view/index">Indeks 1</a> |
  3. <a href="index.php?q=action/akcja">Akcja</a>
  4. <hr/>
  5. Szablon: OK<br/>
  6. {if $test}
  7. Zmienna: OK<br/>
  8. {/if}


/index.php
  1. <?php
  2. define( 'APPDIR', dirname( __FILE__ ) . '/' );
  3. require_once( 'smarty/Smarty.class.php' );
  4.  
  5. function run( $req )
  6. {
  7. $tpl =& new Smarty;
  8. while( !empty( $req ) && file_exists( APPDIR . 'public/' . $req . '.php' ) )
  9. $req = include( APPDIR . 'public/' . $req . '.php' );
  10. return $tpl->fetch( $template );
  11. }
  12.  
  13. echo run( $_REQUEST['q'] ? $_REQUEST['q'] : 'view/index' );
  14. ?>


Przykład jest banalnie prosty. Chyba jednak nie do końca potrafię zrozumieć jego potencjał (o ile takowy istnieje). Na ile można coś takiego wykorzystać?


--------------------
Sygnaturka: jest
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
kszychu
post 22.10.2004, 07:32:44
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 712
Pomógł: 23
Dołączył: 27.10.2003
Skąd: z kontowni

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


1. Zmień temat wątku.
2. Powiedz z czym masz problem albo co ci nie działa.


--------------------
"Coś się kończy, coś się zaczyna." Andrzej Sapkowski
Go to the top of the page
+Quote Post
byther
post 22.10.2004, 07:53:12
Post #3





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 15.06.2004
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


Ad. 1) Brak koncepcji. Chodzi Ci coś konkretnego po głowie? Chętnie zmienię na lepszy.
Ad. 2) Wszystko działa. Po prostu chcę poznać opinie innych na temat "podejścia". Chodzi o "maksymalny minimalizm" - prosty, krótki kod przy wysokiej efektywności jego działania.
Jak mogłeś zauważyć, za pomocą funkcji run() możemy wykonywać "łańcuchy" akcji, a do tego wykorzystywać ją (funkcję) rekurencyjnie. Miałbyś jeszcze jakieś spostrzeżenia?

EDIT:
Funkcja run() mogłaby korzystać z osławionego algorytmu autorstwa @hawka i @setha (?) smile.gif. Chodzi o to, że jakiś URI jest dzielony na fizyczny plik i argumenty dla niego:
  1. <?php
  2. function routeURI( $uri, $chrootPath = 'public' )
  3. {
  4. if( empty( $uri ) )
  5. return;
  6. $req = explode( '/', $uri );
  7. $args = array();
  8. while( !file_exists( APPDIR . $chrootPath . '/' . implode( '/', $req ) . '.php' ) )
  9. $args[] = array_pop( $req );
  10. return array(
  11. 'path' => APPDIR . $chrootPath . '/' . implode( '/', $req ) . '.php',
  12. 'args' => implode( '/', array_reverse( $args ) )
  13. );
  14. }
  15. ?>

PS. Automatyczne tworzenie adresów przy odnośnikach? Hmm... smile.gif
PS2. Nadal czekam na spostrzeżenia...

Ten post edytował byther 27.10.2004, 10:58:48


--------------------
Sygnaturka: jest
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: 14.08.2025 - 06:30