Re: Re: Call to object function, want to PHP interpret returned string
| From: | John Allsopp | Date: | Tue, 07 Jul 2009 08:08:39 +0000 |
| Subject: | Re: Re: Call to object function, want to PHP interpret returned string | ||
| References: | 1 2 3 4 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-294989@lists.php.net to get a copy of this message | ||
Stuart wrote:
2009/7/6 John Allsopp <john@johnallsopp.co.uk>:Ah, thanks. It's a PHP object returning a string, I guess the PHP interpreter won't see that. So, maybe my object has to write a file that my calling file then includes after the object function call. Doesn't sound too elegant, but is that how it's gotta be?David Robley wrote:First guess is that your page doing the including doesn't have a filename with a .php extension, and your server is set to only parse php in files with a .php extension. CheersJohn Allsopp wrote:At the top of a webpage I have: <?php include_once("furniture.php"); $myFurniture = new furniture(); echo $myFurniture->getTop("my company title"); ?> to deliver the first lines of HTML, everything in HEAD and the first bits of page furniture (menu, etc). In the furniture object in getTop(), I want to return a string that includes the CSS file that I call with an include_once. But the include_once isn't interpreted by PHP, it's just outputted. So from:Hi$toReturn = "<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0Transitional//EN' ........<?php include_once('styles3.txt'); ?> .......";return $toReturn;I get <?php include_once('styles3.txt'); ?> in my code. Do I really have to break up my echo $myFurniture->getTop("my company title"); call to getTopTop, then include my CSS, then call getTopBottom, or can I get PHP to interpret that text that came back? PS. I may be stupid, this may be obvious .. I don't program PHP every day Thanks in advance for your help :-) Cheers J
You appear to be looking for the eval function: http://php.net/eval However, in 99.99% of cases using eval is not the right solution. In your case there are two ways to solve it. The first way, assuming the thing you're trying to include is a stylesheet, is to use an external link to a CSS file. That would be the "normal" way to include a stylesheet in an HTML page and is far more efficient that including it inline. If it's not just a stylesheet that you're including then you'll want to load the file in the getTop method. For example... $toReturn = "<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' ........"; $toReturn.= file_get_contents('styles3.txt'); $toReturn.= '..........'; Simple as that. -Stuart Thanks guys. Yes, actually file_get_contents didn't work for me, and yes you're right, of course I should be including my CSS like <LINK rel='stylesheet' type='text/css' media='screen' href='style3.css' title='style1'> in the header. The style3.txt file I was trying to PHP include was there so I could include more than one stylesheet and make just one amendment. One for printing and I'm guessing one for mobile. All that file contained was the <LINK... line above. That was legacy code. Now I have a furniture object, of course, I can put my stylesheet code in one place there just as part of the header, and have no need for style3.txt. Thanks for all your help. J