For Programmers: Free Programming Magazines  


Home > Archive > PHP Documentation > March 2006 > #36682 [Opn]: Heredoc not correctly parsed









You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

 

Author #36682 [Opn]: Heredoc not correctly parsed
derick@php.net

2006-03-11, 6:57 pm

ID: 36682
Updated by: derick@php.net
Reported By: daniele_dll at yahoo dot it
Status: Open
-Bug Type: Scripting Engine problem
+Bug Type: Documentation problem
Operating System: Windows XP SP2
PHP Version: 5.1.2
New Comment:

Reclassifying as a doc problem. The behavior is correct.


Previous Comments:
------------------------------------------------------------------------

[2006-03-10 20:10:08] daniele_dll at yahoo dot it

for johannes@php.net:

in the description of the bug i've said that "Terminating an heredoc
without a newline cause a parse error" ...

if you try an heredoc into an eval, terminating the stuff without a new
line after the heredoc's terminator, you get a parse error for evalued
code!

code:
echo eval("return <<< EOF\r\nAll Works Correctly!\r\nEOF;");


So there is this "real" problem (not related to other characters into
the terminator line)

Or the heredoc's manual page need to be updated with a new sentence,
like

quote:

Remember that after the heredoc terminator is necessary a new line.



Or this, possible, bug need to be corrected

------------------------------------------------------------------------

[2006-03-10 18:44:05] daniele_dll at yahoo dot it

This doesn't make sense!

Why an heredoc needs, to works correctly, a line only for it, without
other stuff after the terminator (with a semicolon)?
If there is a terminator and an ending semicolon, the command
terminates there, so i should add other commands in the same line
without problems.

I don't think this is a "really" bug, but it is a "logical" bug.

If the heredoc terminator is founded and there is a semicolon to
terminate the line, a new command can be executed, like all other
structures in php.

i can write
<?php
$a = 1; $c = 'daniele_dll'; $b = 'test'; $a = $b; $b = $c; echo $a . $b
.. $c; echo print_r($_SERVER, true); die("ASD");
?>

without problems, so have heredoc that doesn't let to me to add
multiple commands after the heredoc termination (plus semicolon)
doesn't make sense for me.

There is a particular reason to manage heredoc in this way?

------------------------------------------------------------------------

[2006-03-10 18:07:34] johannes@php.net

Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to report
a bug at http://bugs.php.net/how-to-report.php

The terminating new line is obligatory

------------------------------------------------------------------------

[2006-03-10 17:50:07] daniele_dll at yahoo dot it

Description:
------------
Terminating an heredoc without a newline cause a parse error.

The reported code was tested with php 5.0.4, 5.0.5 and 5.1.2

Reproduce code:
---------------
<?php
echo <<< HEREDOC_EOF

Test
Heredoc

All works fine!

HEREDOC_EOF;?>

Expected result:
----------------
This code should output the text into the heredoc

Actual result:
--------------
The execution of this code return a parse error


------------------------------------------------------------------------


--
Edit this bug report at http://bugs.php.net/?id=36682&edit=1
Sponsored Links







Also available: Server administration forum archive | Web Design forum archive | Software forum archive | Hardware reviews archive

Copyright 2009 codecomments.com