On Wed, 2009-03-11 at 13:20 -0500, Shawn McKenzie wrote:
> Robert Cummings wrote:
> > On Wed, 2009-03-11 at 12:19 -0500, Shawn McKenzie wrote:
> >> Sándor Tamás (HostWare Kft . ) wrote:
> >>> Yes, Rob is right. My original question is about the difference between
> >>> the processing of a file-based site with include() OR eval(). In that
> >>> case, if I understood it correctly, the results are the same.
> >>>
> >>> But! If the included pages contain functions, classes, etc. With eval(),
> >>> can I use them? With include(), I know I should be able to use them. But
> >>> in some mysterious cases I don't have access to a function. If I cut out
> >>> from the included file, and put in on the file which includes that, just
> >>> before (or after) the includ(), I don't have any problem with it.
> >>>
> >>> The next step, that if I include a file in a function, can I use the
> >>> functions wrote in the included file?
> >>> As I know, include just makes a copy-paste, so if I use it IN a
> >>> function, then all function will be in function scope, am I right?
> >> Yes, if you use an include inside a function, then any functions / non
> >> global vars in the included file will only be available inside the
> >> including function.
> > 
> > This is NOT, I repeat, NOT true for functions. Functions are ALWAYS
> > global.
> > 
> > Cheers,
> > Rob.
> Yes, I was too hasty.  The nested function will only be defined once the
> nesting function has been called.  Then it will be available globally.

Actually, you're wrong again. The nested function, AKA function defined
in the included source, will be defined as soon as the source is
included and is available to the function in which the source was
included. In fact it is even available to the code within the included
source that can be run during the include process and before the
function performing the inclusion regains control.

Application and Templating Framework for PHP

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

Reply via email to