Encore un peu de __halt_compiler()
Le but : créer un script qui va monter une base SQL en mémoire pour des tests.
Facile, oui, mais en jouant avec le compilateur Zend cette fois, c'est à dire en écrivant le script SQL au sein même du fichier PHP, sans manger de mémoire PHP pour le stocker dans une variable.
Voila la sauce :
$p = new PDO("sqlite::memory:", "user", "pass");
$fp = fopen(__FILE__, 'r');
fseek($fp, __COMPILER_HALT_OFFSET__);
while ($line = fgets($fp)) {
// on crée le tables et on insère les données écrites en SQL sous le script PHP
$p->exec($line);
}
fclose($fp);
__halt_compiler();
create table table1(champ1 INTEGER, champ2 CHAR);
insert into table1 (champ1, champ2) VALUES (3, 'foo');
// {{ some more SQL code to run here }}
Sympa cette fonction qui permet d'encapsuler au sein même de ces fichiers PHP du code non PHP en arrêtant le compilateur.
On pourrait imaginer compresser le code pour qu'il prenne moins de place, voire même encapsuler du code malicieux ... whouuu !
En résumé, un seul fichier encapsule du code PHP, SQLite étant compilé avec PHP ça embarque un moteur de base de données, et il n'a même pas besoin du FileSystem pour stocker la base SQLite : c'est stocké en mémoire ( et détruit en fin de script).
Encapsulation extrême !
Cet article n'a pas de Commentaires pour le moment...
Vous devez être identifié pour poster un commentaire.
Developpement web PHP
| Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 |
Copyright © 2000-2012 - www.developpez.com


, julien pauli 



















![Validate my RSS feed [Valid RSS]](/img/valid-rss.png)
![Validate my Atom 1.0 feed [Valid Atom 1.0]](/img/valid-atom.png)