TinyButStrong | |
---|---|
Sorts | Mallprocessor |
Skrivet i | PHP |
Operativ system | Programvara för flera plattformar |
senaste versionen | 3,9 (26 januari 2014) |
Licens | GNU LGPL |
Hemsida | tinybutstrong.com |
TinyButStrong (förkortning TBS) är en relativt lätt tolkande webbmallmotor för PHP [ 1] . Listas i ett antal internetrecensioner som de bästa PHP -mallhanterarna [2] [3] [4] .
Verktyget TinyButStrong har utformats för att kunna designa mallar med enkel användning av visuella redigerare (som Dreamweaver eller FrontPage ) och låter dig även skapa JavaScript- skript dynamiskt. Detta verktyg innehåller endast 8 funktioner, samtidigt som det ger hög prestanda. Detta gör att mallar kan kombineras med PHP-variabler eller MySQL , PostgreSQL eller SQLite databashanteringssystem .
Till skillnad från till exempel är Smarty inte en variant på temat för ett procedurprogrammeringsspråk , utan använder mekanismer för att länka malltaggar till strukturen och HTML -taggar . Detta gör det enkelt att använda med WYSIWYG HTML-redigerare. Den innehåller också verktyg för att direkt koppla SQL -frågor (utan preliminär bildning av arrayer från dem) till TBS-mallar, etc.
Utvecklare hänvisar till TBS som en tredje typ av mallsystem, där den första typen är användningen av PHP som mallsystem och den andra är programmerbara mallar, som i Smarty .
Biblioteket är implementerat som en PHP -klass som kan utökas med anpassade plugins och distribueras under LGPL -licensen . Plugins inkluderar en uppsättning PHP-funktioner eller en enda PHP-klass som måste överensstämma med en speciell syntax som beräknas av TBS-mallmotorn. Till exempel: databasplugins - förenkla processen att känna igen nya databastyper, andra plugins hjälper användaren att lägga till arbetsfunktioner till TBS eller ändra dess huvudsakliga metoder, vilket gör mallmotorn mer specialiserad.
Användare av olika CMS och CMF har utvecklat bindningsmoduler för denna mallmotor. Bland sådana system finns Joomla , [5] MODx , [6] CodeIgniter , [7] [8] Kohana , [9] Symfony [10] etc.
Tilläggsklassen TinyButStrong OOo i detta bibliotek, som tillåter generering av dokument i OpenOffice.org -formatet , vann en 5:e plats i oktober 2005 i PhpClasses Innovation Award [11] , en tävling som hölls av den populära PHPClasses- webbplatsen .
Den största nackdelen med TBS är dess långsamma prestanda. Det här biblioteket utför en ganska komplex analys av HTML-kod vid tidpunkten för generering av en HTML-sida från en mall (TinyButStrong - till skillnad från Smarty är detta inte en kompileringsmallprocessor). Problemet kan dock lösas genom att ansluta en caching-plugin.
En annan subtil punkt är att, trots enkelheten i den initiala utvecklingen av denna mallmotor, för dess tillräckligt "avancerade" användning, är det nödvändigt att förstå de interna mekanismerna i biblioteket. Annars är det alltför lätt att skriva en mall med ett fel, oavsiktligt beteende eller katastrofalt långsam prestanda.
Lättheten att använda TinyButStrong (särskilt när den är ihopkopplad med WYSIWYG HTML - redigerare ) leder ofta till att den används på fly-by-night-webbplatser, som, på grund av brist på support eller fel i webbapplikationens källkod, snart slutar fungera i vanliga fall. En sökning på google efter raden "TinyButStrong error" ger ganska sorglig statistik om liknande "popularitet" för detta bibliotek.
Följande kod matar ut innehållet i en MySQL-tabell som en "randig" HTML- tabell.
HTML-del:
<html> <body> <p align= "center" class= "title-page" > Exempel på MySQL-dataanslutning </p> <table border= "1" align= "center" cellpadding= "2" cellspacing= " 0 " > <tr bgcolor= "#CACACA" > <td width= "50" ><strong> Plats </strong></td> <td width= "150" ><strong> Nick </strong></ td > <td width= "50" ><strong> Poäng </strong></td> <td width= "100" ><div align= "center" ><strong> Datum </strong></div> < /td> </tr> <tr bgcolor= "#F0F0F0" > <td> [blk1.#] </td> <td> [blk1.res_name;block=tr] </td> <!-- uttrycksblock =tr deklarerar blockgränser, en implicit loop över 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> <!-- två block med samma namn behandlas som sektioner av samma block, --> < !-- som, om inte annat anges, exekveras sekventiellt --> <tr bgcolor= "#E6E6E6" > <td> [blk1.#] </td> <td> [blk1.res_name;block=tr] </ td> 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-avsnittet exekveras endast om blocket inte innehåller några data --> <tr bgcolor= "#E6E6E6" > <td colspan= "4" bgcolor= "#FFCFB9" > [blk1;block=tr;nodata]Inga data. </td> </tr> </table> <p align= "center" > [blk1.#] rader. </p> </body> </html>PHP del:
<?php include_once ( 'tbs_class.php' ) ; // Anslut till databasen om ( ! isset ( $_SERVER )) $_SERVER =& $HTTP_SERVER_VARS ; //PHP<4.1.0 kräver ( $_SERVER [ 'DOCUMENT_ROOT' ] . '/cnx_mysql.php' ); // Filen cnx_mysql.php innehåller följande rader: // $cnx_id = mysql_connect('localhost','user','password'); // mysql_select_db('dbname',$cnx_id) ; // instansiera TBS $TBS = ny clsTinyButStrong ; // ladda mall $TBS -> LoadTemplate ( 'tbs_us_examples_datamysql.htm' ) ; // anslut data för att visa i tabellen $TBS -> MergeBlock ( 'blk1' , $cnx_id , 'SELECT * FROM t_tbs_exemples' ) ; // stäng databasen mysql_close ( $cnx_id ) ; // Visa HTML $TBS -> Visa () ; ?>