TinyButStrong | |
---|---|
Type | Skabelon processor |
Skrevet i | PHP |
Operativ system | Cross-platform software |
nyeste version | 3,9 (26. januar 2014) |
Licens | GNU LGPL |
Internet side | tinybutstrong.com |
TinyButStrong (forkortet TBS) er en relativt let fortolkende webskabelonmotor til PHP [ 1] . Opført i en række internetanmeldelser som de bedste PHP - skabelonbehandlere [2] [3] [4] .
TinyButStrong-værktøjet er designet til at kunne designe skabeloner med den enkle brug af visuelle editorer (såsom Dreamweaver eller FrontPage ) og giver dig også mulighed for at oprette JavaScript -scripts dynamisk. Dette værktøj indeholder kun 8 funktioner, samtidig med at det giver høj ydeevne. Dette gør det muligt at kombinere skabeloner med PHP-variabler eller MySQL- , PostgreSQL- eller SQLite- databasestyringssystemer .
I modsætning til f.eks. er Smarty ikke en variation over temaet for et proceduremæssigt programmeringssprog, men bruger mekanismer til at linke skabelontags til strukturen og HTML -tags . Dette gør det nemt at bruge med WYSIWYG HTML-editorer. Det inkluderer også værktøjer til direkte at forbinde SQL -forespørgsler (uden foreløbig dannelse af arrays fra dem) til TBS-skabeloner osv.
Udviklere omtaler TBS som en tredje type skabelonsystemer, hvor den første type er brugen af selve PHP som et skabelonsystem , og den anden er programmerbare skabeloner, såsom i Smarty .
Biblioteket er implementeret som en PHP -klasse , der kan udvides med brugerdefinerede plugins og distribueres under LGPL -licensen . Plugins inkluderer et sæt PHP-funktioner eller en enkelt PHP-klasse, der skal være i overensstemmelse med en speciel syntaks beregnet af TBS-skabelonmotoren. For eksempel: database plugins - forenkle processen med at genkende nye databasetyper, andre plugins hjælper brugeren med at tilføje arbejdsfunktioner til TBS eller ændre dens hovedmetoder, hvilket gør skabelonmotoren mere specialiseret.
Brugere af forskellige CMS og CMF har udviklet bindingsmoduler til denne skabelonmotor. Blandt sådanne systemer er Joomla , [5] MODx , [6] CodeIgniter , [7] [8] Kohana , [9] Symfony [10] osv.
TinyButStrong OOo-udvidelsesklassen i dette bibliotek, som tillader generering af dokumenter i OpenOffice.org -formatet , vandt 5. pladsen i oktober 2005 i PhpClasses Innovation Award [11] , en konkurrence afholdt af det populære PHPClasses- websted .
Den største ulempe ved TBS er dens langsomme ydeevne. Dette bibliotek udfører en ret kompleks analyse af HTML-kode på tidspunktet for generering af en HTML-side fra en skabelon (TinyButStrong - i modsætning til Smarty er dette ikke en kompileringsskabelonprocessor). Problemet kan dog løses ved at tilslutte et caching-plugin.
Et andet subtilt punkt er, at på trods af enkelheden i den indledende udvikling af denne skabelonmotor, for dens tilstrækkeligt "avancerede" brug, er det nødvendigt at forstå de interne mekanismer i biblioteket. Ellers er det alt for nemt at skrive en skabelon med en fejl, utilsigtet adfærd eller katastrofalt langsom ydeevne.
Brugervenligheden af TinyButStrong (især når den er parret med WYSIWYG HTML - editorer ) fører ofte til, at den bruges på fly-by-night-websteder, som på grund af manglende support eller fejl i kildekoden til webapplikationen snart holder op med at fungere normalt. En søgning i google efter linjen "TinyButStrong error" giver en ret trist statistik om den lignende "popularitet" af dette bibliotek.
Følgende kode vil udlæse indholdet af en MySQL-tabel som en "stribet" HTML - tabel.
HTML del:
<html> <body> <p align= "center" class= "title-page" > Eksempel på MySQL-dataforbindelse </p> <table border= "1" align= "center" cellpadding= "2" cellspacing= " 0 " > <tr bgcolor= "#CACACA" > <td width= "50" ><strong> Placering </strong></td> <td width= "150" ><strong> Nick </strong></ td > <td width= "50" ><strong> Points </strong></td> <td width= "100" ><div align= "center" ><strong> Dato </strong></div> < /td> </tr> <tr bgcolor= "#F0F0F0" > <td> [blk1.#] </td> <td> [blk1.res_name;block=tr] </td> <!-- udtryksblok =tr erklærer blokgrænser, en implicit sløjfe over blk1-poster --> <td><div align= "right" > [blk1.res_score] </div></td> <td><div align= "center" > [blk1.res_date;frm='mm-dd-yyyy'] </div></td> </tr> <!-- to blokke af samme navn behandles som sektioner af samme blok, --> < !-- som, medmindre andet er angivet, udføres sekventielt --> <tr bgcolor= "#E6E6E6" > <td> [blk1.#] </td> <td> [blk1.res_name;block=tr] </ td> <td><div align= "right" > [blk1.res_score] </di v></td> <td><div align= "center" > [blk1.res_date;frm='mm-dd-yyyy'] </div></td> </tr> <!-- NoData sektion udføres kun, hvis blokken ikke indeholder data --> <tr bgcolor= "#E6E6E6" > <td colspan= "4" bgcolor= "#FFCFB9" > [blk1;block=tr;nodata]Ingen data. </td> </tr> </table> <p align= "center" > [blk1.#] rækker output. </p> </body> </html>PHP del:
<?php include_once ( 'tbs_class.php' ) ; // Opret forbindelse til databasen hvis ( ! isset ( $_SERVER )) $_SERVER =& $HTTP_SERVER_VARS ; //PHP<4.1.0 kræver ( $_SERVER [ 'DOCUMENT_ROOT' ] . '/cnx_mysql.php' ); // Filen cnx_mysql.php indeholder følgende linjer: // $cnx_id = mysql_connect('localhost','user','password'); // mysql_select_db('dbnavn',$cnx_id) ; // instantiate TBS $TBS = new clsTinyButStrong ; // indlæs skabelon $TBS -> LoadTemplate ( 'tbs_us_examples_datamysql.htm' ) ; // tilslut data til visning i tabellen $TBS -> MergeBlock ( 'blk1' , $cnx_id , 'SELECT * FROM t_tbs_exemples' ) ; // luk databasen mysql_close ( $cnx_id ) ; // Vis HTML $TBS -> Vis () ; ?>