CakePOWER: Integrazione nel sistema

CakePOWER è distribuito come un package esterno da inserire nella cartella “vendors” di una qualunque distribuzione CakePHP.

Bootstrap.php

Il primo file da modificare per garantire la corretta integrazione di CakePOWER è APP/config/bootstrap.php al quale andrà aggiunta la seguente istruzione:

### CakePOWER's bootstrapping. #####################################################################
if ( !@include( VENDORS.'power'.DS.'bootstrap.php' ) ) die( '<div align="center" style="font-family:verdana;font-size:8pt;color:#666;"><span style="color:red;font-weight:bold;display:block;font-size:20pt;margin-bottom:20px;">:-(</span>CakePOWER libraries not found.<br><a href="http://cakepower.juniorcms.com" style="color:blue;" title="Open Source CMS, CakePHP CMS">JuniorCMS.com</a></div>');

In questa istruzione viene caricato il file di inizializzazione di CakePOWER il quale predispone l'intero sistema all'utilizzo del software. In caso di errore l'intera esecuzione dello script viene terminata con un messaggio di errore.

Routes.php

Il secondo file da modificare per garantire la corretta integrazione di CakePOWER è APP/config/routes.php al quale andrà aggiunta la seguente istruzione:

### CakePOWER's Plugin Routing. ####################################################################
if ( !@include( POWER_ROUTES ) ) die( '<div align="center" style="font-family:verdana;font-size:8pt;color:#666;"><span style="color:red;font-weight:bold;display:block;font-size:20pt;margin-bottom:20px;">:-(</span>CakePOWER routing libraries not found.<br><a href="http://cakepower.juniorcms.com" style="color:blue;" title="Open Source CMS, CakePHP CMS">JuniorCMS.com</a></div>');

Questa integrazione permette di estendere le direttive di routing CakePHP direttamente dai plugins installati nel sistema CakePOWER.

Estensione delle classi base

L'integrazione del framework si basa principalmente sull'estensione delle sue classi base: L'applicazione estende CakePOWER il quale a sua volta estende CakePHP proprio come illustrato dalla seguente immagine.

Layout dell'ereditarietà in CakePOWER

E' evidente che CakePOWER è uno strato software che funge da cuscinetto tra CakePHP e l'applicazione. Di fatto CakePOWER è un'estensione di CakePHP e fornisce allo sviluppatore delle funzionalità aggiuntive per lo sviluppo di applicazioni avanzate.

L'integrazione di CakePOWER avviene dunque nei file di applicazione:

  • app_controller.php
  • app_model.php
  • app_component.php (la definizione di questo file è opzionale)
  • app_helper.php (la definizione di questo file è opzionale)
  • app_behavior.php (la definizione di questo file è opzionale)

app_controller.php

<?php
# CakePOWER | Caricamento classi di framework da estendere.                                       #
require_once(POWER_APP_CONTROLLER); require_once(POWER_APP_COMPONENT); require_once(POWER_APP_HELPER);
 
class AppController extends PowerController {}
?>

app_model.php

<?php
# CakePOWER | Caricamento classi di framework da estendere.                                       #
require_once(POWER_APP_MODEL); require_once(POWER_APP_BEHAVIOR);
 
class AppModel extends PowerModel {}
?>

AppHelper

La definizione di questo file è opzionale in quanto CakePOWER è in grado di emulare la sua esistenza. Lo scopo è estendere la classe helper di CakePOWER all'interno dell'applicazione.

<?php
class AppHelper extends PowerHelper {}
?>

AppComponent

La definizione di questo file è opzionale in quanto CakePOWER è in grado di emulare la sua esistenza. Lo scopo è estendere la classe Component di CakePOWER all'interno dell'applicazione.

<?php
class AppComponent extends PowerComponent {}
?>

AppBehavior

La definizione di questo file è opzionale in quanto CakePOWER è in grado di emulare la sua esistenza. Lo scopo è estendere la classe Behavior di CakePOWER all'interno dell'applicazione.

<?php
class AppBehavior extends PowerBehavior {}
?>

Utilizza CakePHP con Power!

Ora che hai effettuato queste semplici operazioni la tua applicazione CakePHP integra CakePOWER è può utilizzarne tutte le funzionalità.

Ho usato il condizionale in quanto CakePOWER è un layer completamente non invasivo. Non devi modificare il tuo modo di sviluppare ed, in linea di massima, tutte le applicazioni che hai sviluppato con CakePHP 1.2 sono compatibili con CakePOWER.

L'unico accorgimento necessario è nell'utilizzo della callback ”beforeFilter()”. In questo punto infatti avviene l'unica reale “invasione” di CakePOWER: ti chiedo di scrivere 1 riga di codice a tua scelta!

// AppController
function beforeFilter() {
  parent::beforeFilter();
 
  ... your code ...
 
}
 
function beforeRender() {
  parent::beforeRender();
 
  ... your code ...
 
}
 
/home/juniorcm/public_html/wiki/data/pages/cakepower/integrazione.txt · Ultima modifica: 03/08/2009 14:58 da peg
 
Ad eccezione da dove è diversamente indicato, il contenuto di questo wiki è sotto la seguente licenza:GNU Free Documentation License 1.2
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki