|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2002-12-10 13:38 UTC] a_villacis at palosanto dot com
My configuration (as reported by phpinfo()):
./configure --with-apxs=/opt/httpd/bin/apxs
--with-mysql=/usr --with-gd
--with-curl=/opt/curl-7.10.1/
--with-pdflib=/opt/pdflib/
--with-zlib --enable-inline-optimizations
--enable-pcntl --enable-dio --with-ncurses
--enable-sockets
What I did (filename 'ticks_bug_php'):
--------------- CUT HERE --------------------
#!/usr/local/bin/php
<?php
function predefined_out()
{
echo "Inside predefined_out()\n";
}
predefined_out();
postdefined_out();
function postdefined_out()
{
echo "Inside postdefined_out()\n";
}
declare(ticks = 1)
{
function predefined_in()
{
echo "Inside predefined_in()\n";
}
predefined_in();
postdefined_in();
function postdefined_in()
{
echo "Inside postdefined_in()\n";
}
}
?>
--------------- CUT HERE --------------------
What I expected:
[avillaci@srv64 practica]$ ./ticks_bug_php
Inside predefined_out()
Inside postdefined_out()
Inside predefined_in()
Inside postdefined_in()
[avillaci@srv64 practica]$
What I got instead:
[avillaci@srv64 practica]$ ./ticks_bug_php
Inside predefined_out()
Inside postdefined_out()
Inside predefined_in()
Fatal error: Call to undefined function: postdefined_in()
in /home/avillaci/programa/practica/ticks_bug_php on line
25
[avillaci@srv64 practica]$
PHP refuses to call postdefined_in() before its definition
inside the scope of 'declare(ticks=1){}', but has no problem
calling postdefined_out() before its definition, outside
the scope of 'declare(ticks=1){}'.
Any hints in solving this issue will be greatly appreciated.
Alex Villacis Lasso
a_villacis@palosanto.com
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sun Nov 30 10:00:01 2025 UTC |
I just upgraded to version 4.3.0RC3 with the same configure command, but the script gives the same message as in the original posting. This behavior is rather annoying, but a workaround is to declare the troublesome procedure *outside* the scope of the 'declare(ticks=1) {}' block. However, this does not seem to help if the new syntax 'declare(ticks=1);' is used to cover the entire script under the declare() scope. Alex Villacis Lasso a_villacis@palosanto.com