waLibs 4.x
Aggiungere waDB
Prima di passare a vedere altri oggetti di UI come waTable e waForm, che per ovvi motivi fanno uso esteso dell'accesso alla base dati, è necessario vedere come collegare la propria applicazione a uno o più database. Lo strumento che permette questo collegamento è waDB.
Naturalmente occorre prima di tutto crearsi un database di test; se non volete impazzire, in questa fase ne abbiamo preparato uno per voi; è il dump di un DB MySql e lo troverete in walibs4/waapplication/test/db. Installatelo e dategli il nome e i privilegi di security che vi aggradano; in questo esempio assumeremo che il DB sia raggiungibile presso localhost, si chiami testwalibs e che sia editabile mediante lo user watest con password watest (questa configurazione è anche quella utilizzata dai diversi programmini di test forniti a corredo della presente documentazione; si consiglia quindi di replicarla esattamente).
Copiate nella root della vostra applicazione (non è un obbligo, ma una linea guida questo si) il file di configurazione di default del package waDB, dandogli un nome che lo renda riconoscibile; quindi aprite il file copiato col vostro editor e valorizzate i parametri di accesso:
$ cd /var/www/testwalibs
$ cp walibs4/wadb/wadb.config.php dbconfig.inc.php
$ pico dbconfig.inc.php
			
<?php
//****************** dbconfig.inc.php ****************************************
/**
* Tipo database; si vedano le le const {@link waDB::DBTYPE_MYSQL waDB::DBTYPE_*} in {@link wadb.class.php}
*/
$WADB_DBTYPE = waLibs\waDB::DBTYPE_MYSQL;

/**
* Nome o indirizzo IP host di residenza del db
*/
$WADB_HOST = 'localhost';

/**
* Nome utente per l'accesso al db
*/
$WADB_USERNAME = 'watest';

/**
* Password utente per l'accesso al db
*/
$WADB_PASSWORD = 'watest';

/**
* Nome del db
*/
$WADB_DBNAME = 'testwalibs';

/**
* Porta sui cui viene condiviso il db
*/
$WADB_PORT = '';

/**
* Nome di un file sequenziale dove vengono loggati tutti gli acessi in scrittura al db 
* (anonimi, salvo l'ip di provenienza)
*/
$WADB_LOGNAME = '';

/**
* Nome di una funzione callback invocata ad ogni accesso al db in scrittura.
* Alla funzione, se esistente, viene passato come parametro la stringa sql in esecuzione. E' cosi'
* possibile per una applicazione definire un proprio logging, che riporti eventuali dati dell'utente
* che ha invocato la scrittura su db. La variabile puo' anche contenere un metodo: in questo caso sara'
* un array di tre elementi:
* o nome della classe che contiene il metodo
* o nome di una proprieta' statica della classe che restituisce un' istanza della classe
* o nome del metodo da invocare
*/
$WADB_LOG_CALLBACK_FNC = '';

			
A questo punto dovete far sapere alla vostra applicazione che ogni volta che dovrà accedere alla base dati dovrà usare quel file di configurazione. Vi consigliamo quindi di creare e valorizzare una nuova proprietà dell'applicazione, destinata a contenere appunto il nome del file di configurazione per l'accesso al DB. Naturalmente, qualora la vostra applicazione dovesse accedere a più database, anche di tipo diverso, non dovrete fare altro che creare un altro file di configurazione e individuarlo con un'altra proprietà dell'applicazione.
<?php
//****************** testwalibs.inc.php ***************************************
include __DIR__ . "/walibs4/waapplication/waapplication.class.php";

class testwalibs extends waLibs\waApplication
	{
	
	var $fileConfigDB;
	
	function __construct()
		{			
		$this->name = "testwalibs";
		$this->title = "Voglio testare le waLibs";
		include_once  "ui/view/testwalibs.php";
		$this->view = new testwalibs\waApplicationView();
		
		$this->fileConfigDB = __DIR__ . "/dbconfig.inc.php";
		
		$this->init();
		}
		

	function getMenu()
		{
		$m = new waLibs\waMenu();
		$m->open();
		
		$m->openSection("Pagina 1", "pagina1.php");
		$m->closeSection();
		$m->openSection("Pagina 2", "pagina2.php.php");
		$m->closeSection();
		$m->openSection("Pagina N", "paginaN.php.php");
		$m->closeSection();

		$m->close();
		return $m;
		}
		
	}

			
Volendo, a questo punto, potreste ridefinire il metodo getDBConnection della classe waApplication: poichè la vostra applicazione sa già quale file di configurazione per l'accesso al DB utilizzare, è abbastanza inutile (e quindi dannoso) dover specificare a ogni chiamata quale file di configurazione utilizzare. Ma non vogliamo rovinarvi la gioia euristica della programmazione OO.