Drupal come framework di sviluppo

GrUSP
GrUSPGrUSP
Drupal come framework 
          di sviluppo
    Dario Ghilardi                        Marco Vito Moscaritolo
       darioghilardi@gmail.com               marco@mavimo.org
       http://www.darioghilardi.com          http://mavimo.org




                                       
Drupal come framework di sviluppo
            ....coding with Drupal




               Il processo di sviluppo
        ●   Gli hook
        ●   Le Form e le FAPI 2
        ●   L'interazione con il DB
        ●   Il processo di testing

                                      
Drupal come framework di sviluppo
           ....coding with Drupal

                                             Gli hook

Gli hook sono delle funzioni di callback scatenate in 
 automatico dal sistema all'accadere di certi eventi.

Il nome dell'hook viene usato per determinare quale 
              evento deve intercettare.

 Concettualmente possiamo vedere i moduli come 
  classi che ereditano da una classe virtuale ed 
implementano alcuni dei metodi che questa espone, 
           questi metodi sono gli hook.
                                     
Drupal come framework di sviluppo
          ....coding with Drupal

                                          Gli hook


Gli hook sono composti dal nome del modulo seguito 
            dal nome dell'hook, quindi:

         miomodulo_user(...)
         miomodulo_nodeapi(...)
         miomodulo_load(...)
         miomodulo_taxonomy(...)
         miomodulo_schema(...)
         miomodulo_form_alter(...)

                                    
Drupal come framework di sviluppo
              ....coding with Drupal

                                                           Gli hook


/**
  * Implementation of hook_user().
  */
function galleryfapi_user($op, &$edit, &$account, $category = NULL) {
   switch ($op) {
     case 'login':
       # code...
       drupal_set_message(t(quot;Benvenutoquot;), 'status');
       break;
     case 'logout':
       # code...
       drupal_set_message(t(quot;Arrivederciquot;), 'status');
       break;
   }
}



                                        
Drupal come framework di sviluppo
           ....coding with Drupal

                                           I Form e le FAPI2




Il form viene strutturato come array e non richiede la 
           definizione del codice di markup.

Viene gestito dal sistema che ne controlla l'integrità 
          dei dati e ne gestisce il flusso.

Tramite hook_form_alter (o altri) è possibile andare a 
modificare i form generati da altre parti del sistema.


                                     
Drupal come framework di sviluppo
         ....coding with Drupal

                                         I Form e le FAPI2


  Le Form API 2 sono gli elementi strutturali che 
compongono l'array del form; ne esistono alcune di 
                  default, quali:
                   ● select

                   ● textfield

                   ● checkbox

                   ● ...


ed è possibile crearne ad hoc in base alle proprio 
             esigenze implmentative.

                                   
Drupal come framework di sviluppo
           ....coding with Drupal

                                                 I Form e le FAPI2
/**
  * Implementation of hook_form_alter().
  */
function miomodulo_form_alter(&$form, $form_state, $form_id) {
   // Add node-form info here
   $form['name'] = array(
     '#type'           => 'select',
     '#title'          => t('Title'),
     '#description'    => t('Description'),
     '#required'       => TRUE,
     '#options'        => array(
          'value1' => t('Description 1'),
          'value2' => t('Description 2'),
          'value3' => t('Description 3'),
       ),
   );
}
                                     
Drupal come framework di sviluppo
              ....coding with Drupal

                                                     I Form e le FAPI2




      Esempio di validazione di un campo testo di un 
            form generato precedentemente
    /**
      * Implementation of hook_validate().
      */
    function miomodulo_validate(&$form, $form_elements) {
       if($form_elements['age'] < 18) {
         form_set_error('age', t('Devi essere maggiorenne.'));
       }
    }




                                        
Drupal come framework di sviluppo
            ....coding with Drupal

                                              Il database

Drupal si interfaccia con diversi database, anche se il 
            principale risulta essere MySQL

 Nella versione precedente (la 5) tutte le operazioni 
venivano svolte con chiamate dirette al DB, mentre 
con la versione attuale esiste un livello di astrazione 
        intermedio su cui agire (il DB Layer).

     La versione 7 amplierà le funzionalità del DBL 
         gestendo configurazioni master­slave 
                                      
Drupal come framework di sviluppo
            ....coding with Drupal

                                                Il database

      Il DBL si interfaccia al database ed in base 
       all'hook_schema ne definisce la struttura.

     Inoltre, tramite apposite funzioni, si occupa di 
       generare le corrette chiamate di scrittura 
                  (insert/update) sul DB.

     Le operazioni di lettura vengono demandate a 
    moduli stessi per permettere agli sviluppatori di 
          ottimizzare le query che generano.
                                      
Drupal come framework di sviluppo
           ....coding with Drupal

                                                   Il database




Operazione di update di un campo all'interno di una 
       tabella usando le funzioni del DBL:
       $data = new stdClass();
       $data->id   = 25;
       $data->txt = 'bla bla bla';
       $data->bool = FALSE;
       drupal_write_record('tabella', $data, array('id'));




                                     
Drupal come framework di sviluppo
          ....coding with Drupal

                                                 Il database



      Esempio di un estrazione di dati dal DB:
        $results = db_query(quot;SELECT *
                             FROM {tabella}
                             WHERE id < %dquot;,
                             $id_limit);

        while ($row = db_fetch_object($results)) {
          $output .= $row->id;
          $output .= $row->txt;
          $output .= $row->bool;
        }



                                    
Drupal come framework di sviluppo
            ....coding with Drupal

                                               Il database

  Il sistema di interazione con il DB mette già in atto 
 alcune funzionalità per la sicurezza; per fare questo, 
però, bisogna rispettare i cosiddetti coding standard:

       Uso dei placeholder nelle query, in questo 
      ●


       modo il sistema sanitizza i parametri della 
       query evitando SQL injection

       check_plain e filter_xss per ripulire l'input 
      ●


       e l'utput dei datiXSS.
                                      
Drupal come framework di sviluppo
            ....coding with Drupal

                                                 testing




Drupal utilizza unit testing per l'analisi dei meccanismi 
 di funzionamento dei diversi moduli. Questo si basa 
        sulla libreria Open Source simpletest.

Oltre a questo esistono i moduli coder e schema che 
analizzano l'aderenza del codice ai coding standard (il 
        primo) e l'integrità del DB (il secondo). 


                                      
Drupal come framework di sviluppo
           ....coding with Drupal

                                             Conclusioni



   Questo strumento si sta evolvendo sempre più 
 seguendo due direzioni parallele, la prima orientata 
   verso il CMS e la seconda verso il framework.

   Questo consente di sfruttarne le potenzialità in 
entrambe le situazioni ottimizzando quindi i tempi di 
 realizzazione dei progetti basati su di esso sia per 
      sviluppatori che per gli amministratori.

                                     
Drupal come framework di sviluppo
          ....coding with Drupal




                   Domande?
            Per altre informazioni visitate

http://drupal.org           e      http://www.drupalitalia.org


                                    
1 de 17

Recomendados

Laravel Framework PHPLaravel Framework PHP
Laravel Framework PHPBeniamino Ferrari
621 vistas45 diapositivas
Xaml su XamarinXaml su Xamarin
Xaml su XamarinBeniamino Ferrari
1.1K vistas56 diapositivas
couchbase mobilecouchbase mobile
couchbase mobileBeniamino Ferrari
2K vistas105 diapositivas
Net core baseNet core base
Net core baseBeniamino Ferrari
1.1K vistas45 diapositivas
Laravel 7 REST APILaravel 7 REST API
Laravel 7 REST APIBeniamino Ferrari
724 vistas15 diapositivas

Más contenido relacionado

Más de GrUSP

PayPal e PHPPayPal e PHP
PayPal e PHPGrUSP
1.3K vistas68 diapositivas
Zend ServerZend Server
Zend ServerGrUSP
535 vistas17 diapositivas
Zend DojoZend Dojo
Zend DojoGrUSP
938 vistas21 diapositivas
PHP & IBM iPHP & IBM i
PHP & IBM iGrUSP
978 vistas21 diapositivas
Programmazione Ad Eventi In PhpProgrammazione Ad Eventi In Php
Programmazione Ad Eventi In PhpGrUSP
2K vistas14 diapositivas
Symfony 2.0Symfony 2.0
Symfony 2.0GrUSP
1K vistas104 diapositivas

Más de GrUSP(8)

PayPal e PHPPayPal e PHP
PayPal e PHP
GrUSP1.3K vistas
Zend ServerZend Server
Zend Server
GrUSP535 vistas
Zend DojoZend Dojo
Zend Dojo
GrUSP938 vistas
PHP & IBM iPHP & IBM i
PHP & IBM i
GrUSP978 vistas
Symfony 2.0Symfony 2.0
Symfony 2.0
GrUSP1K vistas
Mocking Objects PracticesMocking Objects Practices
Mocking Objects Practices
GrUSP589 vistas

Drupal come framework di sviluppo

  • 1. Drupal come framework  di sviluppo Dario Ghilardi Marco Vito Moscaritolo darioghilardi@gmail.com marco@mavimo.org http://www.darioghilardi.com http://mavimo.org    
  • 2. Drupal come framework di sviluppo ....coding with Drupal Il processo di sviluppo ● Gli hook ● Le Form e le FAPI 2 ● L'interazione con il DB ● Il processo di testing    
  • 3. Drupal come framework di sviluppo ....coding with Drupal Gli hook Gli hook sono delle funzioni di callback scatenate in  automatico dal sistema all'accadere di certi eventi. Il nome dell'hook viene usato per determinare quale  evento deve intercettare. Concettualmente possiamo vedere i moduli come  classi che ereditano da una classe virtuale ed  implementano alcuni dei metodi che questa espone,  questi metodi sono gli hook.    
  • 4. Drupal come framework di sviluppo ....coding with Drupal Gli hook Gli hook sono composti dal nome del modulo seguito  dal nome dell'hook, quindi: miomodulo_user(...) miomodulo_nodeapi(...) miomodulo_load(...) miomodulo_taxonomy(...) miomodulo_schema(...) miomodulo_form_alter(...)    
  • 5. Drupal come framework di sviluppo ....coding with Drupal Gli hook /** * Implementation of hook_user(). */ function galleryfapi_user($op, &$edit, &$account, $category = NULL) { switch ($op) { case 'login': # code... drupal_set_message(t(quot;Benvenutoquot;), 'status'); break; case 'logout': # code... drupal_set_message(t(quot;Arrivederciquot;), 'status'); break; } }    
  • 6. Drupal come framework di sviluppo ....coding with Drupal I Form e le FAPI2 Il form viene strutturato come array e non richiede la  definizione del codice di markup. Viene gestito dal sistema che ne controlla l'integrità  dei dati e ne gestisce il flusso. Tramite hook_form_alter (o altri) è possibile andare a  modificare i form generati da altre parti del sistema.    
  • 7. Drupal come framework di sviluppo ....coding with Drupal I Form e le FAPI2 Le Form API 2 sono gli elementi strutturali che  compongono l'array del form; ne esistono alcune di  default, quali: ● select ● textfield ● checkbox ● ... ed è possibile crearne ad hoc in base alle proprio  esigenze implmentative.    
  • 8. Drupal come framework di sviluppo ....coding with Drupal I Form e le FAPI2 /** * Implementation of hook_form_alter(). */ function miomodulo_form_alter(&$form, $form_state, $form_id) { // Add node-form info here $form['name'] = array( '#type' => 'select', '#title' => t('Title'), '#description' => t('Description'), '#required' => TRUE, '#options' => array( 'value1' => t('Description 1'), 'value2' => t('Description 2'), 'value3' => t('Description 3'), ), ); }    
  • 9. Drupal come framework di sviluppo ....coding with Drupal I Form e le FAPI2 Esempio di validazione di un campo testo di un  form generato precedentemente /** * Implementation of hook_validate(). */ function miomodulo_validate(&$form, $form_elements) { if($form_elements['age'] < 18) { form_set_error('age', t('Devi essere maggiorenne.')); } }    
  • 10. Drupal come framework di sviluppo ....coding with Drupal Il database Drupal si interfaccia con diversi database, anche se il  principale risulta essere MySQL Nella versione precedente (la 5) tutte le operazioni  venivano svolte con chiamate dirette al DB, mentre  con la versione attuale esiste un livello di astrazione  intermedio su cui agire (il DB Layer). La versione 7 amplierà le funzionalità del DBL  gestendo configurazioni master­slave     
  • 11. Drupal come framework di sviluppo ....coding with Drupal Il database Il DBL si interfaccia al database ed in base  all'hook_schema ne definisce la struttura. Inoltre, tramite apposite funzioni, si occupa di  generare le corrette chiamate di scrittura  (insert/update) sul DB.  Le operazioni di lettura vengono demandate a  moduli stessi per permettere agli sviluppatori di  ottimizzare le query che generano.    
  • 12. Drupal come framework di sviluppo ....coding with Drupal Il database Operazione di update di un campo all'interno di una  tabella usando le funzioni del DBL: $data = new stdClass(); $data->id = 25; $data->txt = 'bla bla bla'; $data->bool = FALSE; drupal_write_record('tabella', $data, array('id'));    
  • 13. Drupal come framework di sviluppo ....coding with Drupal Il database Esempio di un estrazione di dati dal DB: $results = db_query(quot;SELECT * FROM {tabella} WHERE id < %dquot;, $id_limit); while ($row = db_fetch_object($results)) { $output .= $row->id; $output .= $row->txt; $output .= $row->bool; }    
  • 14. Drupal come framework di sviluppo ....coding with Drupal Il database Il sistema di interazione con il DB mette già in atto  alcune funzionalità per la sicurezza; per fare questo,  però, bisogna rispettare i cosiddetti coding standard:  Uso dei placeholder nelle query, in questo  ● modo il sistema sanitizza i parametri della  query evitando SQL injection  check_plain e filter_xss per ripulire l'input  ● e l'utput dei datiXSS.    
  • 15. Drupal come framework di sviluppo ....coding with Drupal testing Drupal utilizza unit testing per l'analisi dei meccanismi  di funzionamento dei diversi moduli. Questo si basa  sulla libreria Open Source simpletest. Oltre a questo esistono i moduli coder e schema che  analizzano l'aderenza del codice ai coding standard (il  primo) e l'integrità del DB (il secondo).     
  • 16. Drupal come framework di sviluppo ....coding with Drupal Conclusioni Questo strumento si sta evolvendo sempre più  seguendo due direzioni parallele, la prima orientata  verso il CMS e la seconda verso il framework. Questo consente di sfruttarne le potenzialità in  entrambe le situazioni ottimizzando quindi i tempi di  realizzazione dei progetti basati su di esso sia per  sviluppatori che per gli amministratori.    
  • 17. Drupal come framework di sviluppo ....coding with Drupal Domande? Per altre informazioni visitate http://drupal.org e http://www.drupalitalia.org