Use of patterns in PHP4
Many programmers faced a problem when " freedom " in a spelling html is necessary for the designer, and to the programmer "cleanliness" of a code:) At me such has happened at a spelling of virtual web - shop. In general, without thinking twice I began to search for various PHP-classes for creation of " dynamic sites " with use of so-called patterns. Also has found one which met all my requirements, but too he appeared " big and heavy ". This class FastTemplate (I do not remember where I have downloaded it ) is called. Without thinking twice, I have decided to write the class, having taken for a basis functionality FastTemplate. My results in a spelling of the class have turned out practically such as at FastTemplate, but as it seems to me, not worse nearly (a comment: I did not copy a code, and created itself from zero).
So, for the beginning jobs it is necessary for you to download my class template.
Have downloaded? Now it is possible to try on a simple example. We shall make an example of listing of files of the current catalogue with calculation kol-va byte of each file, thus dynamically having created the table. So, create the following files:
main.htm
<html>
<head>
<title> <! - ABOUT-> </title>
<link rel = "stylesheet" type = "text/css" href = "/styles.css ">
</head>
<body>
<p align = "center" class = "b"> <!-
ABOUT
-> <br>
Localtime is <! - LOCALTIME->
</p> <br>
<div align = "center"> <table STYLE = "border-collapse:collapse" class = "th">
<tr>
<td colspan = "2" class = "th" align = "center" style = " background-color: * 000000; color:white "> File listing </td>
</tr>
<!-
TABLE_CONTENT
->
<tr>
<td class = "th" align = "right" style = " background-color: * 000000; color:white "> *nbsp; </td>
<td class = "th" style = " background-color: * 000000; color:white "> *nbsp; <! - TOTAL-> *nbsp; </td>
</tr>
</table> </div>
</body>
</html>
rows.htm
<tr>
<td align = "right" class = "th" style = " background-color: <! - COLOR->; color:black "> *nbsp; <! - PWD-> *nbsp; </td>
<td class = "th" style = " background-color: <! - COLOR->; color:black "> *nbsp; <! - FILESIZE-> *nbsp; </td>
</tr>
index.php
<? php
require (' templates.php '); // we Include a class in job with patterns
// We determine tegi
$meta = array ("ABOUT" => ":: template class example:: ",
"LOCALTIME" => date (" M-d-Y H:i:s "));
$t = new template;
// We initialize files and descriptors
$t-> init (array (index => "main.htm", rows => "rows.htm"));
// We establish{install} terminators (delimiter-y)
$t-> delimiters (" <! - ", "-> ");
// We determine tegi
$t-> assign ($meta);
$d = dir(".;
$colors = array ("*d4d4d4", "*a0a0a0"); $i = 0;
$totalbytes = 0;
while ($entry = $d-> read ()) {
if (preg_match (" / ^ (\. |\.\.) $ / ", $entry)) continue;
$color = $colors [$i];
$t-> assign ("FILENAME", $entry); // It is determined under tegom FILNAME a name of a file
$t-> assign ("COLOR", $color); // under COLOR the current color
$t-> assign ("PWD", realpath ($entry)); // the Full way
if (($size = filesize ($entry))> 1024) {
$totalbytes + = $size;
$size = sprintf (" %0.2f Kbytes ", ($size / 1024));
} else {
$totalbytes + = $size;
$size. = "bytes";
}
$t-> assign ("FILESIZE", $size); // we connect with tegom FILESIZE dlinnu a file
// We process a file with a descriptor rows, thus the received results
// We fix under tegom TABLE_CONTENT (by addition)
$t-> parseit (rows, "TABLE_CONTENT");
$i = (++ $i> = count ($colors))? 0: $i;
// Under it tegom we will have the general{common} kol-in byte najdenykh files
$t-> assign ("TOTAL", (($totalbytes> 1024)? sprintf (" %0.2f Kbytes ", ($totalbytes / 1024)): $totalbytes. "bytes"));
}
$d-> close ();
// We process page with a descriptor index. I.e. at processing
// All coming across tegi will be replaced with the certain value.
$t-> parseit (index);
// We deduce{remove} all
$t-> printit ();
$t-> freshall ();
?>
Results of performance it is possible to see here <http://null.magelan.ru/php/templates> the Given class works very much shustro, obrabotchik it is constructed on the basis of regular expressions.
The detailed description
In a class files are certain:
$filelist - an associative file deksriptorov and files
$assign - an associative file certain{determined} tegov
$root - the root
$arr - a file with result
$delmiters - terminators
// init - Initialization of patterns
// arr - an associative file (sm.primer) with descriptors and files
// root - the root where files (to default current) lay
// delimit - here it is possible to specify the terminator from two symbols, for example " {} "
function init ($arr = " ", $root = " ", $delimit = " ")
// Installation of the root of patterns
function setroot ($root = " ")
// Addition of descriptors and files for job with patterns
// list - an associative file
function listit ($list = " ")
// Processing a pattern
// $d - a descriptor of a file OR the FILE!
// $temp - processing in teg $temp (if not to specify, given kh-ija will process
// deksr.fajla also will add it to a file with results)
function parseit ($d = " ", $temp = " ")
// To receive the processed file, returns string
// $array - a file
function getparsed ($array)
// To specify terminators
// $d1 - left, $d2 - right
// For example $t-> delimiters (" <! - ", "-> ");
function delimiters ($d1 = " ", $d2 = " ")
// As listit, only to add it is possible not an associative file, and
// A simple line
// $d - a descriptor of a file
// $name - a name of a file
function addtolist ($d = " ", $name = " ")
// It is used for clearing all files in a class
function freshall ()
// It is used for clearing results of processing
// It is cleared $arr
function fresh ()
// To display
function printit ()

|