| 
	
 | 
 Posted by Jon Slaughter on 05/10/07 17:00 
"Chung Leong" <chernyshevsky@hotmail.com> wrote in message  
news:1178812844.248954.101410@y5g2000hsa.googlegroups.com... 
> On May 10, 4:29 pm, "Jon Slaughter" <Jon_Slaugh...@Hotmail.com> wrote: 
>> I'm using eval to excute some mixed php and html code but I cannot debug  
>> it. 
>> I am essentially using filegetcontents to load up a php/html file and  
>> then 
>> inserting it into another php/html file and then using eval to execute  
>> the 
>> final product. 
>> 
>> If I were to use include and output buffering instead of filegetcontents 
>> would it allow be to debug the code? (I have to capture the include so it 
>> can be modified which is why I used filegetcontents and eval in the first 
>> place). 
>> 
>> essentially instead of something like eval(mod(filegetcontents())) 
>> 
>> I would have 
>> 
>> ob_start(); 
>> include $filename; 
>> $contents = mod(ob_get_contents()); 
>> ob_end_clean(); 
>> 
>> As far as I can remember mod only modifies html code but I can't be 
>> completely sure. In any case I'm not sure how the include eval the code  
>> when 
>> its buffered as if its just the output or what?  Right now everythign is 
>> working fine and I don't want to screw it up but I'm kinda dragging my  
>> feet 
>> because of the debugging issues. 
>> 
>> Thanks, 
>> Jon 
> 
> An alternative to using eval() is to implement a stream wrapper, then 
> using include/require on a custom URL. What I would do is save the 
> generated content to a temporary file during debug so that you can 
> more easily see where an error occur. 
> 
> See http://www.php.net/manual/en/ref.stream.php 
> 
 
Ok, I'm not sure if I understand what you mean. Are you saying that I should  
read one php statement at a time and evaluate the php statements? 
 
That is, I might read the file into an object and then parse it one  
statement at a time and eval each statement. This way I could step through  
the code... not necessarily the best way but does let me debug my code. 
 
 
The problem is, that in my code I do something like 
 
eval('?>'.AddNavToPage($MainPage)); 
 
Where $MainPage is just an html file that acts as a template(I probably  
could have included it aftwards instead of the way I did it but I think its  
probably to late to recode it at this point). 
 
So when I debug the code I get to this line and then cannot debug whats  
inside. 
 
What is inside is what AddNavToPage does, which is inserts a php/html file  
$mainpage into the template page to generate the total page. 
 
Essentially AddNavToPage returns a mixed php/html that was stiched together  
by 2 other pages. 
 
I suppose I could save it to a temp file like you mentioned and then include  
it and it should work? 
 
that is, instead of the eval line I could do 
 
if ($DEBUG) 
{ 
file_put_contents($temp, AddNavToPage($MainPage))); 
include $temp; 
} 
 
(psuedo code) 
 
I'll try that and see what happens, 
 
Thanks, 
Jon
 
[Back to original message] 
 |