|
Posted by Jason Barnett on 01/07/05 17:56
>>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
[Back to original message]
|