Detta har inget med OOP att göra, men varför uppfinner du hjulet igen när det kommer till templating? Har du kollat på lösningar som t.ex Smarty?
Frågan#1
Hade tänkt att testa på lite OOP. Har kommit så här långt
Grundkoden på sidan
<?php
/// global function
function parseFile($tpl)
{
ob_start();
include($tpl);
$content=ob_get_contents();
ob_end_clean();
return $content;
}
// Prints global header
class tpl_GlobalHeader {
var $output;
function tpl_GlobalHeader($tpl)
{
$this->output=file_get_contents($tpl) or die('Error: Template file '.$tpl.' not found');
}
function parseTemplate($lang=array())
{
if(count($lang)>0)
{
foreach($lang as $text=>$data)
{
$data=(file_exists($data))?$this->parseFile($data):$data;
$this->output=str_replace('|'.$text.'|',$data,$this->output);
}
}
else {die('Error: No language defined');}
}
function display_tpl()
{
return $this->output;
}
}
// Javascripts
class Begin_Print_JavaScript {
var $JS_output;
function Begin_Print_JavaScript($JS_tpl)
{
$JS_part = explode('/*', file_get_contents($JS_tpl));
$JS_section = explode('>', $JS_part[1]);
$this->JS_output .= $JS_part[0].'/*'; // Beginning of HTML-JavaScript
$this->JS_output .= $JS_section[0]; // Defining languge in JS functions
foreach($JS_section as $html_JS)
{
if(preg_match("/".$_GET['page_id']."/i", $html_JS) == true)
{
$this->JS_output .=$html_JS;
}
}
$this->JS_output .= '/*'.$JS_part[2]; // End of HTML-Javascript
}
function display_final_JS()
{
$JS_begin = "\t<script src=\"/js/";
$JS_end = ".js\" type=\"text/javascript\" />\n";
if($_GET['page_id'] == 'register') {$this->JS_output .= $JS_begin.'CheckForm'.$JS_end;}
if($_GET['page_id'] == 'register') {$this->JS_output .= $JS_begin.'HexIt'.$JS_end;}
if($_GET['page_id'] == 'test') {$this->JS_output .= $JS_begin.'TestIt'.$JS_end;}
return $this->JS_output;
}
}
/////////////////////////////////////////////// END //////////////////
require $_GET['lang'].".php";
// BEGIN HEADER
$tp=&new tpl_GlobalHeader('sidan.tpl');
$tp->parseTemplate($lang);
echo $tp->display_tpl();
// PRINT JAVASCRIPTS
$js=&new Begin_Print_JavaScript('Javascript.tpl');
echo $js->display_final_JS();
?>
De två templatefilerna
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>|title|</title>
<!-- META -->
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<meta name="distribution" content="global" />
<meta http-equiv="imagetoolbar" content="no" />
<meta name="robots" content="index, follow" />
<meta name="description" content="|meta-desc|" />
<meta name="keywords" content="|meta-keyw|" />
<meta http-equiv="content-language" content="|language|" />
<link rel="icon" href="img/favicon.ico" type="img-x/ico" />
<link rel="stylesheet" href="css/main.css" type="text/css" />
<link rel="stylesheet" href="css/|language|.css" type="text/css" />
<script src="/js/beta.js" type="text/javascript"></script>
<script type="text/javascript">
/* <![CDATA[ */
var Lang = 'sv';
>//register
var reg;
>//test
var test;
/* ]]> */
</script>
Språkfilen
<?php
$lang['title'] ='titel';
$lang['meta-desc'] ='Meta descriptio';
$lang['meta-keyw'] ='Nyckelord';
$lang['language'] ='sv';
$lang['text'] = 'HEj hej hemskt mycket hej';
?>
Jag gillar separeringen mellan de olika kodspråken men jag vet inte om det här egentligen är helt onödigt, lite overkill kanske. Det kommer som sagt finnas en del javascript i html-koden som ger olika kommentarer som hämtas från språkfilen
Någon som kanse har nåt tips att ge :) Allt fungerar som sagt men kanske man kunde få lite råd nu när man försöker lära sig att tänka på det här sättet