7. Classi, istanze, metodi e URL

Abbiamo visto come l'URL http://localhost:8000 genera una chiamata al metodo index della classe Root . L'URL http://localhost:8000/viewResult genera una chiamata al metodo viewResult della classe Root.

Rispondiamo a queste domande:

Prima di tutto, quando dichiarate nel file sorgente una CherryClass:

CherryClass ClassName:

CherryPy ( o per essere più precisi: l'eseguibile generato da CherryPy) automaticamente creerà un'istanza di questa classe, chiamata className. Questo è il nome della classe con la prima lettera del nome minuscola. (Questa è la ragione per cui i nomi delle classi CherryPy dovrebbero sempre iniziare con una lettera maiuscola) Questa istanza è una variabile globale che è accessibile da qualsiasi parte del programma.

Basandosi sull'URL, come fa CherryPy a conoscere quale metodo di quale istanza di classe chiamare?

Usa un semplice meccanismo: Per l'URL host/dir1/dir2/dir3/page, chiamerà il metodo dir1_dir2_dir3.page(). Così si aspetterà che il vostro programma abbia un classe CherryClass chiamata Dir1_dir2_dir3, che dovrebbe avere un metodo chiamato page.

Ci sono 2 casi speciali:

Importante: In CherryPy-0.9, è stata aggiunta una nuova caratteristica: se viene richiesta la pagina http://localhost:8000/dir1/dir2/dir3 , CherryPy prima convertirà la chiamata in dir1_dir2.dir3(), aspettandosi quindi un metodo dir3 nella classe CherryClass Dir1_dir2. Ma se tale metodo non esiste, verrà cercato un metodo index nella classe CherryClass Dir1_dir2_dir3. (che potrebbe anche corrispondere a http://localhost:8000/dir1/dir2/dir3/index).

Nel prossimo capitolo vedremo come usare l'ereditarietà quando abbiamo moduli simili all'interno di un sito web...

See About this document... for information on suggesting changes.