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]

Reply via email to