If we were designing the language from the ground up I would agree with you. However, we are talking about a language that is already being used by lots of people. Therefore I see no reason to break the old code.
Brian Moon ---------------------------------------------------------------------- dealnews.com, Inc. Makers of dealnews, dealmac http://dealnews.com/ | http://dealmac.com/ ----- Original Message ----- From: "Edin Kadribasic" <[EMAIL PROTECTED]> To: "Rasmus Lerdorf" <[EMAIL PROTECTED]> Cc: "Stanislav Malyshev" <[EMAIL PROTECTED]>; "Daniel Beckham" <[EMAIL PROTECTED]>; "Brian Moon" <[EMAIL PROTECTED]>; "PHP Development" <[EMAIL PROTECTED]> Sent: Friday, October 19, 2001 5:22 AM Subject: Re: [PHP-DEV] New zend_compile.c to solve all of the duplicate function problems > I guess I do not understand. The following example works just fine in PHP > 4.1.0RC1: > > test.php > ===== > <?php > include 'testlib.php'; > include 'testlib.php'; > test(); > ?> > testlib.php > ====== > <?php > if (!defined('_TESTLIB_PHP')) { > define ('_TESTLIB_PHP', 1); > > function test() { > print "Function test()\n"; > } > } > ?> > > This however does not work and IMHO should not work. (It did work on PHP > 4.0.6) > testlib.php > ====== > <?php > if (!defined('_TESTLIB_PHP')) { > define ('_TESTLIB_PHP', 1); > return; > } > function test() { > print "Function test()\n"; > } > ?> > > The second example utilises the fact that the script compiling stoped at > return, while now it does not. I really fail to see what's wrong with using > the first example and how that cannot be used for preventing multiple > function definitions. > > > Edin > > > It is valid in the sense that the code would not be executed the second > > time, but it isn't valid for preventing multiple function definitions > > inside that block. ie. no conditional function definitions. > > > > -Rasmus > > > > On Fri, 19 Oct 2001, Edin Kadribasic wrote: > > > > > > Since you can no longer do: > > > > > > > > if(!defined(_FOO_INC)): > > > > define('_FOO_INC',1); > > > > > > > > ... > > > > > > > > endif; > > > > > > > > to protect a file from multiple inclusion within the file itself, some > > > > > > This is still a valid construct. I could find nothing in the discussion > that > > > would indicate otherwise. The only thing that does not work now, and it > did > > > before was: > > > > > > if(!defined(_FOO_INC)): > > > define('_FOO_INC',1); > > > return; > > > endif; > > > ... > > > ... > > > > > > > > > > > > > > > > > > > > > -- PHP Development Mailing List <http://www.php.net/> To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]