Question on "use" behavior

php.internals

Martin Alterisio

18 years ago
Consider the following code: test.php: <?php include 'foo.php'; use test::foo; foo(); ?> foo.php: <?php namespace test; function foo() { } ?> Is it expected behavior that the scripts ends in: Fatal error: Call to undefined function foo() ? That's all for now. Best regards, Martin Alterisio PS: Is there any benchmark that could be run to test out what's the impact of the delayed name resolutions? I believe is not considerable but I'd like to test in my machine and provide some feedback, and I don't know if what I'm trying to do as benchmark is reliable ("time <phpscript>" and shell-scripting for data compilation).

Greg Beaver

18 years ago
Martin Alterisio wrote:
> Consider the following code: > > test.php: > <?php > include 'foo.php'; > use test::foo; > foo(); > ?> > > foo.php: > <?php > namespace test; > function foo() { } > ?> > > Is it expected behavior that the scripts ends in: > Fatal error: Call to undefined function foo() > ?
Hi Martin, No. This is a bug, I was alluding to it in an earlier email, but you know how time eats up one's life, so I haven't reported it and would grateful if someone would (or Dmitry/Stas would just know why it is broken and fix it :) Greg

Martin Alterisio

18 years ago
2007/12/20, Greg Beaver <cellog@php.net>:
> > Martin Alterisio wrote: > > Consider the following code: > > > > test.php: > > <?php > > include 'foo.php'; > > use test::foo; > > foo(); > > ?> > > > > foo.php: > > <?php > > namespace test; > > function foo() { } > > ?> > > > > Is it expected behavior that the scripts ends in: > > Fatal error: Call to undefined function foo() > > ? > > Hi Martin, > > No. This is a bug, I was alluding to it in an earlier email, but you > know how time eats up one's life, so I haven't reported it and would > grateful if someone would (or Dmitry/Stas would just know why it is > broken and fix it :) > > Greg >
Thank you. Sorry I didn't read your mail about this bug. I'll look into it a bit more and post a bug report. Have you seen my post scriptum in the first mail about benchmarks? Any idea of what I could use to test the performance of the unsolved name resolutions that are pushed into the executer? I expect there won't be any considerable performance penalty but just want to be completely sure.

Martin Alterisio

18 years ago
2007/12/20, Martin Alterisio <malterisio777@gmail.com>:
> > 2007/12/20, Greg Beaver <cellog@php.net>: > > > > Martin Alterisio wrote: > > > Consider the following code: > > > > > > test.php: > > > <?php > > > include 'foo.php'; > > > use test::foo; > > > foo(); > > > ?> > > > > > > foo.php: > > > <?php > > > namespace test; > > > function foo() { } > > > ?> > > > > > > Is it expected behavior that the scripts ends in: > > > Fatal error: Call to undefined function foo() > > > ? > > > > Hi Martin, > > > > No. This is a bug, I was alluding to it in an earlier email, but you > > know how time eats up one's life, so I haven't reported it and would > > grateful if someone would (or Dmitry/Stas would just know why it is > > broken and fix it :) > > > > Greg > > > > Thank you. Sorry I didn't read your mail about this bug. I'll look into it > a bit more and post a bug report. > > Have you seen my post scriptum in the first mail about benchmarks? Any > idea of what I could use to test the performance of the unsolved name > resolutions that are pushed into the executer? I expect there won't be any > considerable performance penalty but just want to be completely sure.
Please, review the following patch against 5.3: http://martinalterisio.com.ar/php5.3/use.function.patch It should fix the use statement behavior so that aliases for namespaced functions into global scope are recognized. The example code in the first mail shouldn't fail and call test::foo(). I've tried some variations and run the tests without finding any problem, but please check again if you can. If nothing comes out, I'll post it in a bug report asap. Best Regards, Martin Alterisio