Re: env vars in included _functions_?

From: Date: Fri, 01 Dec 2000 01:55:15 +0000
Subject: Re: env vars in included _functions_?
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-28027@lists.php.net to get a copy of this message
Function do not carry over variables, you would have to tell the function that you wanted to use the variable(s) by using GLOBAL, or you can pass the variable(s) to the function directly. -- phptest2.php <?PHP //phptest2.php function phptest2 () { GLOBAL $PHP_SELF; echo "2: $PHP_SELF<P>\n"; } ?> or -- phptest2.php <?PHP //phptest2.php function phptest2 ($PHP_SELF) { echo "2: $PHP_SELF<P>\n"; } ?> then your call is: phptest2($PHP_SELF); Hope it helps. Jay ----- Original Message ----- From: "Sean Straw / PSE" <PSE-L@mail.professional.org> To: <php-general@lists.php.net> Sent: Thursday, November 30, 2000 7:15 AM Subject: [PHP] env vars in included _functions_? > > Server: Apache/1.3.14 Ben-SSL/1.42 (Unix) PHP/4.0.3pl1 > > > I'm having a problem with env vars in an included function. For a simple > example: > > > -- phptest1.php > <?PHP //phptest1.php > echo "1: $PHP_SELF<P>\n"; > ?> > -- phptest2.php > <?PHP //phptest2.php > function phptest2 () > { > echo "2: $PHP_SELF<P>\n"; > } > ?> > -- phptest3.php > <?PHP //phptest3.php > $iare = getenv("PHP_SELF"); > echo "3: $iare<P>\n"; > ?> > -- phptest4.php > <?PHP //phptest4.php > function phptest4 () > { > $iare = getenv("PHP_SELF"); > echo "4: $iare<P>\n"; > } > ?> > -- phptest5.php > <?PHP //phptest5.php > echo "5: $HTTP_SERVER_VARS[PHP_SELF]<P>\n"; > } > ?> > -- phptest6.php > <?PHP //phptest6.php > function phptest6 () > { > echo "6: $HTTP_SERVER_VARS[PHP_SELF]<P>\n"; > } > ?> > -- phptest.php > <?PHP include ("phptest1.php"); include ("phptest2.php"); phptest2 (); > include ("phptest3.php"); include ("phptest4.php"); phptest4 (); include > ("phptest5.php"); include ("phptest6.php"); phptest6 (); ?> > -- > > > When one loads up the phptest.php script (via a browser, not the > commandline), this results in: > > -- > 1: /test/phptest.php > > 2: > > 3: > > 4: > > 5: /test/phptest.php > > 6: > > -- > > Now, certainly, PHP_SELF isn't a real environmet variable. So both of the > getenv() functions can be expected to fail. But why does do both of the > other included_as_function (phptest2 and phptest6) implementations > fail? It seems only _INLINE CODE_, not included functions, can make use of > env variables - if the functions are part of the main module, no problem, > but if they're included, kiss variables goodbye. > > Is this a bug, or did I miss something basic? > > > > FTR, I fell on this annoyance when scribbling up a really basic > link-unless-this-is us function, for wrapping some page elements so that > they're not a link if they'd be linking to this same page (useful for > included headers and footers). Since I'd just as soon use this as a > function, included in a bigger library, rather than including it all over > the place as embedded code, It would be nice it the environment variables > worked. > > <?PHP // condlink.php > // link the provided material to a given url as long as the current > // document IS NOT equal to the given document name. > // > // content is the material to show - either linked, or by itself. > // page is the server-relative document path you're comparing against > // link is the link to use in the created HREF, may be blank if you > // want to use page (which most often, you probably will) > // > // example: > // condlink( <IMG SRC="banner.gif">, '/index.php', > '/index.php' ); > // which is the same as: > // condlink( <IMG SRC="banner.gif">, '/index.php' ); > // > // SBS 29 NOV 2000 18:42:02 - created > > function condlink ( $content, $page, $link=NULL ) > { > if ($link == "") > { > // assume same as page > $link = $page; > } > > // if the CURRENT page == $page, then DON'T link, > // otherwise, link to $link > > if ( $PHP_SELF == $page ) > { > echo $content; > } > else > { > echo "<A HREF=\"$link\">$content</A>"; > } > } > ?> > --- > Please DO NOT carbon me on list replies. I'll get my copy from the list. > > Sean B. Straw / Professional Software Engineering > Post Box 2395 / San Rafael, CA 94912-2395 > > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, e-mail: php-general-unsubscribe@lists.php.net > For additional commands, e-mail: php-general-help@lists.php.net > To contact the list administrators, e-mail: php-list-admin@lists.php.net >

« previous php.general (#28027) next »