tbp
1.0.0
TBP est un cadre léger conçu pour développer des sites Web petits et moyens. Concentré dans les composants orientés
Connecteur à sqlite3. Travaille avec des déclarations préparées (obligatoires). Prise en charge des transactions.
Extension php ext-sqlite3 requise. Vérifiez phpinfo() . Par défaut, l'image Docker tbp-web-server prend en charge SQLite.
Ajouter à votre composer.json , à la section require :
"ext-sqlite3": "*"
Créer un fichier de configuration, comme config/my-sqlite.config
# TBP/SQLite config file.
# ALL PARAMETERS ARE OPTIONAL!
# Database file name (if not defined, will use 'default.db')
filename=resources/test.db
# Access type
# readOnly=yes
# Encryption key (if not defined, no encryption used)
# encryptionKey=
Créez un domaine étendant AbstractSqliteDomain et transmettez votre fichier de configuration. Ajoutez une méthode pour chaque requête nécessaire.
class MyDomain extends AbstractSqliteDomain
{
public function __construct ()
{
$ configReader = new Config ( __CONFIG_PATH__ ); // <-- get a config reader, passing your config folder
$ config = $ configReader -> getConfig ( ' my-sqlite ' ); // <-- read your configuration, passing your config base name
$ config -> filename = // <-- convert your relative path into absolute path
__BASE_PATH__ .
DIRECTORY_SEPARATOR .
$ config -> filename ;
parent :: __construct ( $ config );
$ this -> open (); // <-- open a db connection and let's rock!
}
public function addRegister ( $ a , $ b )
{
$ sql = " INSERT INTO `MyTableWithAutoInc` (`a`, `b`) VALUES (?, ?) " ;
$ params = array ( $ a , $ b );
return self :: insertWithAutoincrement ( $ this -> connection -> command ( $ sql , $ params ));
}
public function addAnotherRegister ( $ a , $ b )
{
$ sql = " INSERT INTO `MyOtherTable` (`a`, `b`) VALUES (?, ?) " ;
$ params = array ( $ a , $ b );
return $ this -> connection -> command ( $ sql , $ params );
}
public function getRegisters ( $ b )
{
$ sql = " SELECT * FROM `MyTableWithAutoInc` WHERE `b` <= ? " ;
$ params = array ( $ b );
return self :: getAll ( $ this -> connection -> select ( $ sql , $ params ));
}
public function getRegisterById ( $ id )
{
$ sql = " SELECT * FROM `MyTableWithAutoInc` WHERE `MyId` = ? " ;
$ params = array ( $ id );
return self :: getSingle ( $ this -> connection -> select ( $ sql , $ params ));
}
}Exemple de code direct:
$ domain = new MyDomain ();
$ results = $ domain -> getRegisters ( 9391 ); // get an arrayExemple de code avec des transactions:
$ domain = new MyDomain ();
try {
$ domain -> begin ();
$ lastId = $ domain -> addRegister ( 1 , 2 );
echo " first query: last inserted id: $ lastId n" ;
$ lastId = $ domain -> addRegister ( 3 , 4 );
echo " second query: last inserted id: $ lastId n" ;
$ domain -> commit ();
} catch ( Exception $ e ) {
$ domain -> rollback ();
echo " ERROR: " . $ e -> getMessage () . "n" ;
}