Re: [PHP] eval and HEREDOC

2010-07-21 Thread Sorin Buturugeanu
Hi Peter!

In the first version of the template engine I had markers but now I
need more complex conditions or operations inside the template files,
like array of arrays and so on. I really like the freedom to be able
to just open a PHP tag  and use a foreach() or whatever PHP
function as I please.

Thanks again to all of you for your support! :)

Sorin

--
Sorin Buturugeanu
http://www.soin.ro



On Wed, Jul 21, 2010 at 9:47 AM, Peter Lind  wrote:
> On 21 July 2010 06:46, Sorin Buturugeanu  wrote:
>> @Vincent: no, the short tags are not off.
>>
>> @Jim: This seamns to work fine:
>>
>> $template = file_get_contents(pathTemplates.$this->dir.$this->tpl);
>> ob_start();
>> $template = eval('?>'.$template);
>> $template = ob_get_clean();
>>
>> Thanks!
>>
>> Best wishes!
>>
>> Sorin
>>
>>
>> --
>> Sorin Buturugeanu
>> http://www.soin.ro
>>
>>
>>
>>
>> On Wed, Jul 21, 2010 at 1:45 AM,   wrote:
>>>
>>>
>>>
>>> On Wed, 21 Jul 2010 01:04:12 +0300, Sorin Buturugeanu  wrote:
 Hello Vincent and thank you for your reply :).

 That's true, I forgot to explain how I got to using HEREDOC, so ..

 Using eval(file_get_contents($file)) just outputs the result on the
 spot and I need
 to get the whole output (without echoing it) and do some more things with
 it.

 require_once() doesn't fit here (from what I can tell), because it
 would still just
 include the file in echo the output.

 I think there must be a solution, but I'm missing something here  ..
>>>
>>>
>>> Check out the ob_* functions
>>>
>>> You could do this
>>>
>>> ob_start();
>>>
>>> include "/your/file.php";
>>>
>>> $output = ob_get_clean();
>>>
>>> echo $output;
>>>
>>> Jim
>>>

 Thanks again!

 --
 Sorin Buturugeanu
 http://www.soin.ro


 On Wed, Jul 21, 2010 at 12:49 AM, Daevid Vincent 
 wrote:
>
> > -Original Message-
> > From: Sorin Buturugeanu [mailto:m...@soin.ro]
> > Sent: Tuesday, July 20, 2010 2:11 PM
> > To: php-general@lists.php.net
> > Subject: [PHP] eval and HEREDOC
> >
> > Hello,
> >
> > I am having trouble with a part of my templating script. I'll
> > try to explain:
> >
> > The template itself is HTML with PHP code inside it, like:
> >
> > 
> >
> > And I have the following code as part of the templating engine:
> >
> > $template = file_get_contents($file);
> > $template = "return << > $template = eval($template);
> >
> > The problem is that the eval() HEREDOC combination gives the
> > following output:
> >
> > 
> >
> > If in the HTML file (template) I use
> >
> > 
> >
> > I get   as an output.
> >
> > I have tried closing the php tag like this:
> >
> > $template = "return <<".$template."\nTEMPLATE;\n";
> >
> > but the extra ?> only gets outputed as HTML.
> >
> > This is my first post to this mailing list, so I great you
> > all and thank you for any kind of solution to my problem.
>
> Why are you using HEREDOC to begin with? I personally find them to be
 ugly
> and more trouble than they're worth.
>
> You can write the same thing as this I think (untested):
>
> $template = eval(file_get_contents($file));
>
> But you might also consider using "include_once" or "require_once"
 instead
> of this "eval()" business.
>
> Also note, that a string can span more than one line and have variables
 in
> it. It can even be used with code, so HEREDOC is again useless for most
> situations:
>
> $foo = "
> Hello $name,\n
> \n
> Today is ".date('Y-m-d')."\n
> \n
> Lorem ipsum dolor sit amet, consectetur adipiscing elit.
> \n
> Nulla eros purus, pharetra a blandit non, pellentesque et leo. In augue
> metus, mattis a sollicitudin in, placerat vitae elit.
> \n
> Quisque elit mauris, varius sit amet cursus sed, eleifend a mauris.
> ";
>

 --
 PHP General Mailing List (http://www.php.net/)
 To unsubscribe, visit: http://www.php.net/unsub.php
>>>
>>>
>>> --
>>> PHP General Mailing List (http://www.php.net/)
>>> To unsubscribe, visit: http://www.php.net/unsub.php
>>>
>>>
>>
>> --
>> PHP General Mailing List (http://www.php.net/)
>> To unsubscribe, visit: http://www.php.net/unsub.php
>>
>>
>
> 1) heredoc is great for not caring about escaping ' or ". Whether or
> not you like the syntax it's not hard to use in any way.
> 2) stay away from eval. Just don't use it unless you have no other choice
> 3) the include+output buffering solution is much better. Another
> option would be to use markers in your templates and then just replace
> them with content. Whether or not that would suit you depends on what
> kinds of templates you're making and for what purpose
>
> Regards
> Peter
>
> --
> 
> WWW: http://plphp.dk / http://plind.dk
> LinkedIn: http://www.linkedin.com/in/plind

Re: [PHP] eval and HEREDOC

2010-07-20 Thread Peter Lind
On 21 July 2010 06:46, Sorin Buturugeanu  wrote:
> @Vincent: no, the short tags are not off.
>
> @Jim: This seamns to work fine:
>
> $template = file_get_contents(pathTemplates.$this->dir.$this->tpl);
> ob_start();
> $template = eval('?>'.$template);
> $template = ob_get_clean();
>
> Thanks!
>
> Best wishes!
>
> Sorin
>
>
> --
> Sorin Buturugeanu
> http://www.soin.ro
>
>
>
>
> On Wed, Jul 21, 2010 at 1:45 AM,   wrote:
>>
>>
>>
>> On Wed, 21 Jul 2010 01:04:12 +0300, Sorin Buturugeanu  wrote:
>>> Hello Vincent and thank you for your reply :).
>>>
>>> That's true, I forgot to explain how I got to using HEREDOC, so ..
>>>
>>> Using eval(file_get_contents($file)) just outputs the result on the
>>> spot and I need
>>> to get the whole output (without echoing it) and do some more things with
>>> it.
>>>
>>> require_once() doesn't fit here (from what I can tell), because it
>>> would still just
>>> include the file in echo the output.
>>>
>>> I think there must be a solution, but I'm missing something here  ..
>>
>>
>> Check out the ob_* functions
>>
>> You could do this
>>
>> ob_start();
>>
>> include "/your/file.php";
>>
>> $output = ob_get_clean();
>>
>> echo $output;
>>
>> Jim
>>
>>>
>>> Thanks again!
>>>
>>> --
>>> Sorin Buturugeanu
>>> http://www.soin.ro
>>>
>>>
>>> On Wed, Jul 21, 2010 at 12:49 AM, Daevid Vincent 
>>> wrote:

 > -Original Message-
 > From: Sorin Buturugeanu [mailto:m...@soin.ro]
 > Sent: Tuesday, July 20, 2010 2:11 PM
 > To: php-general@lists.php.net
 > Subject: [PHP] eval and HEREDOC
 >
 > Hello,
 >
 > I am having trouble with a part of my templating script. I'll
 > try to explain:
 >
 > The template itself is HTML with PHP code inside it, like:
 >
 > 
 >
 > And I have the following code as part of the templating engine:
 >
 > $template = file_get_contents($file);
 > $template = "return <<>>> > $template = eval($template);
 >
 > The problem is that the eval() HEREDOC combination gives the
 > following output:
 >
 > 
 >
 > If in the HTML file (template) I use
 >
 > 
 >
 > I get   as an output.
 >
 > I have tried closing the php tag like this:
 >
 > $template = "return <<".$template."\nTEMPLATE;\n";
 >
 > but the extra ?> only gets outputed as HTML.
 >
 > This is my first post to this mailing list, so I great you
 > all and thank you for any kind of solution to my problem.

 Why are you using HEREDOC to begin with? I personally find them to be
>>> ugly
 and more trouble than they're worth.

 You can write the same thing as this I think (untested):

 $template = eval(file_get_contents($file));

 But you might also consider using "include_once" or "require_once"
>>> instead
 of this "eval()" business.

 Also note, that a string can span more than one line and have variables
>>> in
 it. It can even be used with code, so HEREDOC is again useless for most
 situations:

 $foo = "
 Hello $name,\n
 \n
 Today is ".date('Y-m-d')."\n
 \n
 Lorem ipsum dolor sit amet, consectetur adipiscing elit.
 \n
 Nulla eros purus, pharetra a blandit non, pellentesque et leo. In augue
 metus, mattis a sollicitudin in, placerat vitae elit.
 \n
 Quisque elit mauris, varius sit amet cursus sed, eleifend a mauris.
 ";

>>>
>>> --
>>> PHP General Mailing List (http://www.php.net/)
>>> To unsubscribe, visit: http://www.php.net/unsub.php
>>
>>
>> --
>> PHP General Mailing List (http://www.php.net/)
>> To unsubscribe, visit: http://www.php.net/unsub.php
>>
>>
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>

1) heredoc is great for not caring about escaping ' or ". Whether or
not you like the syntax it's not hard to use in any way.
2) stay away from eval. Just don't use it unless you have no other choice
3) the include+output buffering solution is much better. Another
option would be to use markers in your templates and then just replace
them with content. Whether or not that would suit you depends on what
kinds of templates you're making and for what purpose

Regards
Peter

-- 

WWW: http://plphp.dk / http://plind.dk
LinkedIn: http://www.linkedin.com/in/plind
BeWelcome/Couchsurfing: Fake51
Twitter: http://twitter.com/kafe15


--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] eval and HEREDOC

2010-07-20 Thread Sorin Buturugeanu
@Vincent: no, the short tags are not off.

@Jim: This seamns to work fine:

$template = file_get_contents(pathTemplates.$this->dir.$this->tpl);
ob_start();
$template = eval('?>'.$template);
$template = ob_get_clean();

Thanks!

Best wishes!

Sorin


--
Sorin Buturugeanu
http://www.soin.ro




On Wed, Jul 21, 2010 at 1:45 AM,   wrote:
>
>
>
> On Wed, 21 Jul 2010 01:04:12 +0300, Sorin Buturugeanu  wrote:
>> Hello Vincent and thank you for your reply :).
>>
>> That's true, I forgot to explain how I got to using HEREDOC, so ..
>>
>> Using eval(file_get_contents($file)) just outputs the result on the
>> spot and I need
>> to get the whole output (without echoing it) and do some more things with
>> it.
>>
>> require_once() doesn't fit here (from what I can tell), because it
>> would still just
>> include the file in echo the output.
>>
>> I think there must be a solution, but I'm missing something here  ..
>
>
> Check out the ob_* functions
>
> You could do this
>
> ob_start();
>
> include "/your/file.php";
>
> $output = ob_get_clean();
>
> echo $output;
>
> Jim
>
>>
>> Thanks again!
>>
>> --
>> Sorin Buturugeanu
>> http://www.soin.ro
>>
>>
>> On Wed, Jul 21, 2010 at 12:49 AM, Daevid Vincent 
>> wrote:
>>>
>>> > -Original Message-
>>> > From: Sorin Buturugeanu [mailto:m...@soin.ro]
>>> > Sent: Tuesday, July 20, 2010 2:11 PM
>>> > To: php-general@lists.php.net
>>> > Subject: [PHP] eval and HEREDOC
>>> >
>>> > Hello,
>>> >
>>> > I am having trouble with a part of my templating script. I'll
>>> > try to explain:
>>> >
>>> > The template itself is HTML with PHP code inside it, like:
>>> >
>>> > 
>>> >
>>> > And I have the following code as part of the templating engine:
>>> >
>>> > $template = file_get_contents($file);
>>> > $template = "return <<>> > $template = eval($template);
>>> >
>>> > The problem is that the eval() HEREDOC combination gives the
>>> > following output:
>>> >
>>> > 
>>> >
>>> > If in the HTML file (template) I use
>>> >
>>> > 
>>> >
>>> > I get   as an output.
>>> >
>>> > I have tried closing the php tag like this:
>>> >
>>> > $template = "return <<".$template."\nTEMPLATE;\n";
>>> >
>>> > but the extra ?> only gets outputed as HTML.
>>> >
>>> > This is my first post to this mailing list, so I great you
>>> > all and thank you for any kind of solution to my problem.
>>>
>>> Why are you using HEREDOC to begin with? I personally find them to be
>> ugly
>>> and more trouble than they're worth.
>>>
>>> You can write the same thing as this I think (untested):
>>>
>>> $template = eval(file_get_contents($file));
>>>
>>> But you might also consider using "include_once" or "require_once"
>> instead
>>> of this "eval()" business.
>>>
>>> Also note, that a string can span more than one line and have variables
>> in
>>> it. It can even be used with code, so HEREDOC is again useless for most
>>> situations:
>>>
>>> $foo = "
>>> Hello $name,\n
>>> \n
>>> Today is ".date('Y-m-d')."\n
>>> \n
>>> Lorem ipsum dolor sit amet, consectetur adipiscing elit.
>>> \n
>>> Nulla eros purus, pharetra a blandit non, pellentesque et leo. In augue
>>> metus, mattis a sollicitudin in, placerat vitae elit.
>>> \n
>>> Quisque elit mauris, varius sit amet cursus sed, eleifend a mauris.
>>> ";
>>>
>>
>> --
>> PHP General Mailing List (http://www.php.net/)
>> To unsubscribe, visit: http://www.php.net/unsub.php
>
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] eval and HEREDOC

2010-07-20 Thread lists





On Wed, 21 Jul 2010 01:04:12 +0300, Sorin Buturugeanu  wrote:

> Hello Vincent and thank you for your reply :).

> 

> That's true, I forgot to explain how I got to using HEREDOC, so ..

> 

> Using eval(file_get_contents($file)) just outputs the result on the

> spot and I need

> to get the whole output (without echoing it) and do some more things with

> it.

> 

> require_once() doesn't fit here (from what I can tell), because it

> would still just

> include the file in echo the output.

> 

> I think there must be a solution, but I'm missing something here  ..





Check out the ob_* functions



You could do this



ob_start();



include "/your/file.php";



$output = ob_get_clean();



echo $output;



Jim



> 

> Thanks again!

> 

> --

> Sorin Buturugeanu

> http://www.soin.ro

> 

> 

> On Wed, Jul 21, 2010 at 12:49 AM, Daevid Vincent 

> wrote:

>>

>> > -Original Message-

>> > From: Sorin Buturugeanu [mailto:m...@soin.ro]

>> > Sent: Tuesday, July 20, 2010 2:11 PM

>> > To: php-general@lists.php.net

>> > Subject: [PHP] eval and HEREDOC

>> >

>> > Hello,

>> >

>> > I am having trouble with a part of my templating script. I'll

>> > try to explain:

>> >

>> > The template itself is HTML with PHP code inside it, like:

>> >

>> > 

>> >

>> > And I have the following code as part of the templating engine:

>> >

>> > $template = file_get_contents($file);

>> > $template = "return <<> > $template = eval($template);

>> >

>> > The problem is that the eval() HEREDOC combination gives the

>> > following output:

>> >

>> > 

>> >

>> > If in the HTML file (template) I use

>> >

>> > 

>> >

>> > I get   as an output.

>> >

>> > I have tried closing the php tag like this:

>> >

>> > $template = "return <<".$template."\nTEMPLATE;\n";

>> >

>> > but the extra ?> only gets outputed as HTML.

>> >

>> > This is my first post to this mailing list, so I great you

>> > all and thank you for any kind of solution to my problem.

>>

>> Why are you using HEREDOC to begin with? I personally find them to be

> ugly

>> and more trouble than they're worth.

>>

>> You can write the same thing as this I think (untested):

>>

>> $template = eval(file_get_contents($file));

>>

>> But you might also consider using "include_once" or "require_once"

> instead

>> of this "eval()" business.

>>

>> Also note, that a string can span more than one line and have variables

> in

>> it. It can even be used with code, so HEREDOC is again useless for most

>> situations:

>>

>> $foo = "

>> Hello $name,\n

>> \n

>> Today is ".date('Y-m-d')."\n

>> \n

>> Lorem ipsum dolor sit amet, consectetur adipiscing elit.

>> \n

>> Nulla eros purus, pharetra a blandit non, pellentesque et leo. In augue

>> metus, mattis a sollicitudin in, placerat vitae elit.

>> \n

>> Quisque elit mauris, varius sit amet cursus sed, eleifend a mauris.

>> ";

>>

> 

> --

> PHP General Mailing List (http://www.php.net/)

> To unsubscribe, visit: http://www.php.net/unsub.php


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] eval and HEREDOC

2010-07-20 Thread Sorin Buturugeanu
Hello Vincent and thank you for your reply :).

That's true, I forgot to explain how I got to using HEREDOC, so ..

Using eval(file_get_contents($file)) just outputs the result on the
spot and I need
to get the whole output (without echoing it) and do some more things with it.

require_once() doesn't fit here (from what I can tell), because it
would still just
include the file in echo the output.

I think there must be a solution, but I'm missing something here  ..

Thanks again!

--
Sorin Buturugeanu
http://www.soin.ro


On Wed, Jul 21, 2010 at 12:49 AM, Daevid Vincent  wrote:
>
> > -Original Message-
> > From: Sorin Buturugeanu [mailto:m...@soin.ro]
> > Sent: Tuesday, July 20, 2010 2:11 PM
> > To: php-general@lists.php.net
> > Subject: [PHP] eval and HEREDOC
> >
> > Hello,
> >
> > I am having trouble with a part of my templating script. I'll
> > try to explain:
> >
> > The template itself is HTML with PHP code inside it, like:
> >
> > 
> >
> > And I have the following code as part of the templating engine:
> >
> > $template = file_get_contents($file);
> > $template = "return << > $template = eval($template);
> >
> > The problem is that the eval() HEREDOC combination gives the
> > following output:
> >
> > 
> >
> > If in the HTML file (template) I use
> >
> > 
> >
> > I get   as an output.
> >
> > I have tried closing the php tag like this:
> >
> > $template = "return <<".$template."\nTEMPLATE;\n";
> >
> > but the extra ?> only gets outputed as HTML.
> >
> > This is my first post to this mailing list, so I great you
> > all and thank you for any kind of solution to my problem.
>
> Why are you using HEREDOC to begin with? I personally find them to be ugly
> and more trouble than they're worth.
>
> You can write the same thing as this I think (untested):
>
> $template = eval(file_get_contents($file));
>
> But you might also consider using "include_once" or "require_once" instead
> of this "eval()" business.
>
> Also note, that a string can span more than one line and have variables in
> it. It can even be used with code, so HEREDOC is again useless for most
> situations:
>
> $foo = "
> Hello $name,\n
> \n
> Today is ".date('Y-m-d')."\n
> \n
> Lorem ipsum dolor sit amet, consectetur adipiscing elit.
> \n
> Nulla eros purus, pharetra a blandit non, pellentesque et leo. In augue
> metus, mattis a sollicitudin in, placerat vitae elit.
> \n
> Quisque elit mauris, varius sit amet cursus sed, eleifend a mauris.
> ";
>

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



RE: [PHP] eval and HEREDOC

2010-07-20 Thread Daevid Vincent
> -Original Message-
> From: Sorin Buturugeanu [mailto:m...@soin.ro] 
> Sent: Tuesday, July 20, 2010 2:11 PM
> To: php-general@lists.php.net
> Subject: [PHP] eval and HEREDOC
> 
> Hello,
> 
> I am having trouble with a part of my templating script. I'll 
> try to explain:
> 
> The template itself is HTML with PHP code inside it, like:
> 
> 
> 
> And I have the following code as part of the templating engine:
> 
> $template = file_get_contents($file);
> $template = "return << $template = eval($template);
> 
> The problem is that the eval() HEREDOC combination gives the 
> following output:
> 
> 
> 
> If in the HTML file (template) I use
> 
> 
> 
> I get   as an output.
> 
> I have tried closing the php tag like this:
> 
> $template = "return <<".$template."\nTEMPLATE;\n";
> 
> but the extra ?> only gets outputed as HTML.
> 
> This is my first post to this mailing list, so I great you 
> all and thank you for any kind of solution to my problem.

Why are you using HEREDOC to begin with? I personally find them to be ugly
and more trouble than they're worth. 

You can write the same thing as this I think (untested):

$template = eval(file_get_contents($file));

But you might also consider using "include_once" or "require_once" instead
of this "eval()" business. 

Also note, that a string can span more than one line and have variables in
it. It can even be used with code, so HEREDOC is again useless for most
situations:

$foo = "
Hello $name,\n
\n
Today is ".date('Y-m-d')."\n
\n
Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
\n
Nulla eros purus, pharetra a blandit non, pellentesque et leo. In augue
metus, mattis a sollicitudin in, placerat vitae elit. 
\n
Quisque elit mauris, varius sit amet cursus sed, eleifend a mauris. 
";


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php