Jump to content

Excessive Constants


per1os

Recommended Posts

Hey all,

 

Designing a new system I am looking into a "template" system as to say that is relatively easy to modify etc. What I came up with was to use a constant variable to house the template information for a specific area. I am curious if this is frowned upon or not. Currently here is what it would look like:

 

<?php
define('TEMPLATE_EXTRA', 'This is a template %REPLACE_VAR% !!!');

$replace['REPLACE_VAR'] = "awesome";
$template = replaceTemplateVar(TEMPLATE_EXTRA, $replace);

print $template;

function replaceTemplateVar($template, $replace) {
       foreach ($replace as $what => $with) 
              $template = str_replace("%" . $what . "%", $with, $template);
       return $template;
}
?>

 

Pretty laid back and basic. The issue that I am not sure about is there could potentially be 25-50 different templates defined as a constant every time the page is loaded.

 

I am not sure if that is a problem or not. Looking for some insight to the situation of having alot of constants defined with some having potentially a lot of text.

 

Thanks.

 

Note: There is no issue with the code.

Link to comment
Share on other sites

I don't like the idea of template engines like smarty where you ask PHP to parse template code, using str_replace or regex or whatever.  In my opinion that is inefficient and you're building a scripting language within a scripting language.  I prefer an approach like this, where you use PHP as the template language.

 

<?php

class TemplatePage
{
function process()
{}

function registerVar($name, $value)
{
	$this->$name = $value;	
}

function renderTemplate($tpl)
{
	require($tpl);
}
}

class SomeTemplatePage extends TemplatePage
{
function process()
{
	$this->registerVar('replace_var', 'awesome');
	$this->registerVar('some_array', array(1,2,3,4,5));
	$this->renderTemplate('test.tpl.php');


}
}

$c = new SomeTemplatePage();
$c->process();

?>

 

test.tpl.php

 

<html>
<body>
This is a template <?php echo $this->replace_var ?> !!!
<?php
foreach($this->some_array as $num) {
echo $num . '<br />';

}?>
</body>
</html>

 

Best,

 

Patrick

Link to comment
Share on other sites

Yea, thats not a bad idea, but I do not like the file portion. I like to keep everything in a database. I know I could do it this way and use eval, but the reason I am coding it in such a way is for my designer, he does not know php but can work with a scheme I create.

 

But I may use that code in other scripts that I create.

 

I think I will try and test the constant issue I am describing, and see if the server load changes at all, but what I will probably end up doing is store these in the DB and make a function that grabs the template and than parses it.

 

I will post any new information I find out regarding constants.

Link to comment
Share on other sites

Well I created a function to test the use of 500 constants that were created "on the fly". My results were as follows:

 

It took 0.004493 seconds to create 500 constants and print 3 out.

 

The code used is here:

<?php
$start = microtime(true);
for ($i=0;$i<500;$i++) {
define('CONSTANT' . $i, 'This is a relatively long string testThis is a relatively long string testThis is a relatively long string testThis is a relatively long string testThis is a relatively long string testThis is a relatively long string testThis is a relatively long string testThis is a relatively long string testThis is a relatively long string testThis is a relatively long string testThis is a relatively long string testThis is a relatively long string testThis is a relatively long string testThis is a relatively long string testThis is a relatively long string testThis is a relatively long string testThis is a relatively long string testThis is a relatively long string testThis is a relatively long string testThis is a relatively long string testThis is a relatively long string testThis is a relatively long string testThis is a relatively long string testThis is a relatively long string testThis is a relatively long string testThis is a relatively long string testThis is a relatively long string testThis is a relatThis is a relatively long string testThis is a relatively long string testThis is a relatively long string testThis is a relatively long string testThis is a relatively long string testThis is a relatively long string testThis is a relatively long string testThis is a relatively long string testThis is a relatively long string testThis is a relatively long string testThis is a relatively long string testThis is a relatively long string testThis is a relatively long string testThis is a relatively long string testThis is a relatively long string testively long string testThis is a relatively long string testThis is a relatively long string test');
}

echo CONSTANT255 . "<br />";
echo CONSTANT450 . "<br />";
echo CONSTANT0 . "<br />";

$end = microtime(true);
$total = ($end - $start);
print '<br /><br />It took ' . $total . ' seconds to create 500 constants and print 3 out.';
?>

 

As far as I can tell the processing time will not be a huge difference, but what about server memory?

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.