Re: Do defined variables exist at application scope, or session scope?
| From: | Larry Garfield | Date: | Sat, 27 Dec 2008 07:00:22 +0000 |
| Subject: | Re: Do defined variables exist at application scope, or session scope? | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-285085@lists.php.net to get a copy of this message | ||
On Friday 26 December 2008 11:54:30 pm Murray wrote:
> Hi All,
>
> In the index.php file of my application I define several variables,
> including such things as the base path of the app, and the theme path etc.
>
> Since I use 'define()' to do this, are these variables available to my app
> regardless of where a particular user enters the app?
>
> So, in starting the app, I define these variables by visiting index.php.
> But if another user gets sent a url to, for example, the help page, when
> they visit it will those variables be available, or will I need to
> explicitly check on each to make sure the variables are defined, because
> the user entered at a different entry point than the 'normal' one?
>
> Note: I will probably do an explicit check anyway, since this seems more
> robust, but I ask to better understand how define works.
>
> Many thanks,
>
> M is for Murray
Well, there is no such thing as a "defined variable". You are, I presume,
talking about constants. (That's what you get from define().) A global
constant (vis, not a class constant) is "super-global", that is, available
absolutely everywhere after the line of code that defines it has executed.
So if the user goes to index.php, and the first line defines a constant
DEBUG_LEVEL, then that constant now exists anywhere in any function or method
for the rest of that page request, period.
However, if someone goes to help.php then the line in index.php is never
executed (why would it be, since the file was never included?), so the constant
is not defined.
Does that make sense?
--
Larry Garfield
larry@garfieldtech.com