Re: dirname(__FILE__)
| From: | Arnaud Limbourg | Date: | Wed, 21 Sep 2005 05:28:41 +0000 |
| Subject: | Re: dirname(__FILE__) | ||
| References: | 1 | Groups: | php.pear.qa |
| Request: | Send a blank email to pear-qa+get-3056@lists.php.net to get a copy of this message | ||
Hi,
I don't have a link but that is something that has been discussed. I
don't remember the reason but there was one :)
marc.theaimsgroup.com is your friend :)
Arnaud.
Markus Albe wrote:
> Hi everybody,
>
> I'm new to the list and I haven't had time to check if this was already
> discussed:
>
> Why not make mandatory the use of "dirname(__FILE__)" prepended to
> includes of other PEAR libraries?
>
> Why? To avoid problems with dependencies on servers that don't have PEAR
> installed or that don't have the PEAR path in the include path (I know
> this can be easily added in a common file, but that makes PEAR libraries
> that depend on other PEAR packages less "drop-in'ish", because it relays
> on the assumption that the system where the package is to be used
> already has a file common to all scripts... Also the .htaccess solution
> isn't great, and it costs Apache quite a few bytes of extra memory...:-\)
>
> Let's take HTML_Page2 as an example, it depends on HTML_Common.
> My dir structure looks like:
>
> /var/www/project/bin /* where my scripts are located */
> /var/www/project/lib/PEAR /* where I uploaded PEAR */
>
> If the PEAR path is not set in the include path, and I include
> HTML_Page2 from a script in the "bin" dir like
> "include_once dirname(__FILE__).'/../lib/PEAR/HTML/Page2.php';"
> PHP won't be able to find HTML/Common.php when HTML_Page2 tries to
> include it like "require_once 'HTML/Common.php';".
> If instead it required the file like
> "require_once dirname(__FILE__).'../HTML/Common.php';" it won't
> fail...
> Since file paths must match class names, it's not so hard to determine
> the number of '..' needed, and it could be even automated somehow (I'm
> sure we can come up with some simple method for it)
>
> I know it may not look so refined as the current technique does, but so
> far this is the only way to avoid having to append the PEAR path to the
> include path; I only have to have properly include the lib I want and
> that's all.
>
> I haven't tested the performance of this, but I'm using it in all my
> scripts and it doesn't seems to affect at all...(of course there's some
> overhead, but probably PHP also has some overhead for resolving a
> relative path agains the full path this technique provides)
>
> Hope to hear from your nice community :)
>
> Best regards,
>
> Markus Albe
>