Prev: $_FILE array being truncated
Next: Database vs. Array
From: "Bob McConnell" on 17 Mar 2010 08:24 From: Robert P. J. Day > On Tue, 16 Mar 2010, John Black wrote: >> On 03/16/2010 06:57 PM, Robert P. J. Day wrote: >> > i have a project (let's call it "proj") which lives in the "proj" >> > directory and which contains several subdirs, some of which might >> > contain their own subdirs and so on. some of those subdirs might >> > contain utility classes that i want to include or require elsewhere, >> > so i want to be able to just: >> > require 'util.php'; >> > and have the PHP include path "do the right thing." right now, it's >> > ugly, as in, having PHP files that do: >> > require '../../proj/util.php'; >> > meaning every single file that wants to include another proj-related >> > file has to know its relative position in the proj hierarchy. barf. >> >> I used to use auto detecting absolute paths but switched to relative >> paths when a client decided to switch his hosting company, I *think* >> it was GoDaddy. They required relative paths when using the shared >> SSL server or the browser would throw errors. >> >> It is really not bad as long a you keep your directory structure >> consistent. I have never received a bug report because of an include >> path issue. It also does not matter where the root directory of the >> app is located since everything is relative anyway. There is also no >> need for the user to configure anything because of the relative >> paths. >> >> So I just set $include = './include/abc/def/' at the top of the >> executing php page and use it further down. You make $include a >> global or simply pass $include to functions or classes when they >> need to include files. I use the later approach. >> >> As I said I never had a problem with it, it just requires >> consistency. > > i'm not entirely sure what you're suggesting here, but i don't think > it will work for me as one of the things i want to do is set up a > "test" directory, inside which i might have subdirectories with more > test routines, so i can't guarantee *anyone's* position relative to > the top of the "proj" directory. > > i might even want to write PHP scripts and place them quite some > distance from the "proj" directory but still want to include utility > scripts from the "proj" directory. based on how i've done this with > shell and makefile-based projects in the past, the easiest solution > seemed to be to simply demand that users set a single environment > variable identifying the location of the "proj" directory, and base > everything off of that by extending the include path. at that point, > everything falls into place and all include/require references work > relative to the top of the "proj" tree. > > i think that's the direction i'm going to go, unless someone has a > compelling reason not to. thanks. IOW, you want to point into the first project's test directory from other projects when you can't know the relative paths between those projects? I suspect you will have to manage that on a machine by machine basis, unless you can convince the entire development team to create a common directory structure that encompasses all projects. Bob McConnell |