ID: 9884
Updated by: stas
Reported By: [EMAIL PROTECTED]
Old-Status: Closed
Status: Open
Bug Type: Scripting Engine problem
Assigned To: 
Comments:

reopened - double function definition still there.

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

[2001-03-29 06:26:35] [EMAIL PROTECTED]
Using return stops _running_ the script. However, in PHP 4,
scrips are _compiled_ in full before running. That means,
all functions, which are defined on the compile stage, will
be defined no matter what happened when the script was run.

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

[2001-03-20 20:03:16] [EMAIL PROTECTED]
in my stupidity, i spelt weird.inc wrong... but you guys are smart, so i'll assume you 
can correct it.. =) (sorry)

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

[2001-03-20 20:00:01] [EMAIL PROTECTED]
Sorry, i forgot to include the output of test.php, here' you go:

----output----
Hi From weird.inc... 1

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

[2001-03-20 19:45:13] [EMAIL PROTECTED]
According to documentation and common sense, using a return inside an include, should 
end processing on the include and return to processing the script that called it. This 
is NOT so when functions or classes are declared AFTER the return line. The Following 
example shows 2 very stange abnormalities and it applies to functions aswell as 
classes...

1. functions/classes can still be declared AFTER the return line. The Declared 
function can be executed.

2. If The funtion/class is declared TWICE, it does not print an error. (this hold true 
to any sort of parse error, except errors withing the classes or functions =)

Here's the sample files:

---wierd.inc---
<?
return "Hi From wierd.inc...";

// The following should not even be processed...
function hello() {
  global $inc_var;
  echo $inc_var." 1";
}

// redeclaring the function should produce an error message
function hello() {
  global $inc_var;
  echo $inc_var." 2";
}
?>

---test.php---
<?
$inc_var = include("weird.inc");

// According the the documentation,
// this function should not exist..
hello();
?>

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



ATTENTION! Do NOT reply to this email!
To reply, use the web interface found at http://bugs.php.net/?id=9884&edit=2


-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to