On May 27, 2018, at 5:46 PM, John wrote:
I am writing a PHP script that has a number of variables that (I
think) are in
Global scope; that is, they are defined inline before the first
command of the
script. Note that these are not necessarily constants as shown in
the example I
included; most of them can be changed by the script.
I have functions defined following these variables and before the
commands in
the script appear, but when they are called, the functions report
the variables
as undefined. This means I have to pass all the Globals to each
function as a
call argument.
A trivial script illustrating the problem is below.
This seems odd but I don't see what I am doing wrong. Any
suggestions?
PHP 5.6.30 called through php-fpm on Apache.
Thanks in advance.
John
------------------------------------
test.php - working version
This variant passes a variable in global scope explicitly as a
parameter. It
displays correctly on the browser screen.
<?php
$bad_line = "This line should display on screen.";
// sample function that works
function sample1($bad_line)
{
return "\n" . $bad_line . "\n";
}
This function could also be written
function sample1($a)
{
return "\n" . $a . "\n";
}
echo sample1($bad_line);
But it looks like you've answered your own question.
If you wanted to have the function, or another function
alter $bad_line, it would need to be passed by reference
echo sample1(&$bad_line) .... as I understand it.
// this call does work
echo sample1($bad_line);
exit;
?>
test.php - doesn't work
This variant does not work; it throws error:
[Sun May 27 20:17:46.779348 2018] [proxy_fcgi:error] [pid 893:tid
139838497978112] [client 192.168.1.104:37732] AH01071: Got error
'PHP message:
PHP Notice: Undefined variable: bad_line in /httpd/iliffe/yrarc/
test.php on
line 8\n'
<?php
$bad_line = "This line should display on screen.";
// sample function that doesn't work
function sample1()
{
return "\n" . $bad_line . "\n";
}
// this call doesn't work
echo sample1();
exit;
?>
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php