Bottom line: I always require_once at the top of a file for any files that I will require. No sense in doing anything else if the required files aren't there. For conditionally including files include_once() has always made the most sense to me.
I'm not sure that's the best strategy: since include() will continue executing your script even if the file does not exist, you shouldn't use include() if anything which follows will fail in the absence of the (non-)included code. If the content of the other file is essential to the correct operation of your script, you should use require(), since that will terminate with a fatal error if the required file is not present.
Isn't this what I said? :P Oh well, no biggie.
It makes sense to require() files in a conditional branch if *only* the code in that branch is dependent on the required file. If all (or at least enough) branches rely on the file, then requiring it at the top of the file is a sensible move.
Ah, now I'm getting more what you mean. To be clear: I generally try to split up my files into the lowest common denominator and keep functionality seperated. The way that I delegate files I generally put one class / module into one file; this just makes it easier for me to manage code. So if I *need* a certain class / module for another class / module to work, then I just require_once at the top of the file.
Whether you use the basic include()/require() or the _once versions depends on whether you want the code in the file to be executed each time the require/include is executed or not. For initialization of constants or parameter variables, the _once versions make sense; for code which contains substantive logic or output, it may not, especially if inside a loop.
Excellent point. Most of what I delegate to includes falls into the categories of constant / variable initialization / class definition / function definition. In fact I do it that way to prevent my logic errors from include'ing the wrong way just as you have described.
-- Teach a person to fish...
Ask smart questions: http://www.catb.org/~esr/faqs/smart-questions.html PHP Manual: http://php.net/manual/ php-general archives: http://marc.theaimsgroup.com/?l=php-general&w=2
-- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php