You are here: Re: require_once doesn't work, "cannot redeclare class..." « PHP Programming Language « IT news, forums, messages
Re: require_once doesn't work, "cannot redeclare class..."

Posted by Jerry Stuckle on 02/24/06 16:56

Kimmo Laine wrote:
> I'm flipping my wig here, people. I'm using classes and making each class a
> file. when I'm including dependet classess, I use require_once to avoid
> multiple declarations - yet they happen. I put debug_print_backtrace in the
> file to see how it is included, and here's the output:
> #0 require_once() called at [\eKirje.textGrid.class.php:4]
> #1 require_once(\eKirje.textGrid.class.php) called at
> [\lasku.eKirjeLasku.class.php:3]#0 require_once() called at
> [\eKirje.kanava.class.php:3]
> #1 require_once(\eKirje.kanava.class.php) called at
> [\eKirje.EPL8.class.php:3]
> #2 require_once(\eKirje.EPL8.class.php) called at
> [\eKirje.kirje.class.php:3]
> #3 require_once(\eKirje.kirje.class.php) called at
> [\lasku.eKirjeLasku.class.php:5]
> <br />
> <b>Fatal error</b>: Cannot redeclare class boxcontainer in
> <b>\eKirje.boxcontainer.class.php</b> on line <b>5</b><br />As you see, it
> does get required twice regardless of the use of require_once in each call.
> And eventually the class gets declared again. My fix for the problem was to
> use
>
> if( !in_array('boxcontainer', get_declared_classes()) ) {
> require_once('eKirje.boxContainer.class.php');
> }
>
> in the files and now it works, but I'm just totally baffeld of why this is
> happening? How come the require_once fails to function? Am I missing
> something here?
>
> I made the simplest test case where I had four files where in the first of
> them I declare a class, then require_once it to two other files and then
> finally require_once the two files to a fourth file. In this case I did not
> get redeclaration errors, for some reason it worked okay then, the class was
> declared only one and it worked okay.
>

Kimmo,

That should work just fine.

First of all, please check the case on each of your require_once
statements. Are they the same? If the case is different, PHP will
think it's two different files. Also if the path has changed PHP may
consider them to be different files.

Perhaps if you copy/paste the actual require_once statements so we can
see exactly what you're doing.

Also, what version of PHP are you using?

--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex@attglobal.net
==================

 

Navigation:

[Reply to this message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация