Yes, this is true, the default generator doesn't automatically place the files into this directory structure. We just sort of assumed most people using PHP stuff were writing stuff for a webserver, and were going to need to copy their generated code over into some other file hierarchy anyways.
Definitely feel free to make a patch or a compiler flag that lets you more easily manipulate the generated directories. -----Original Message----- From: Dvir Volk [mailto:[email protected]] Sent: Monday, July 20, 2009 12:39 PM To: [email protected] Subject: Re: wrong include paths in PHP I usually use dirname(__FILE__) or $_SERVER['DOCUMENT_ROOT'] to "absolutize" the paths before including stuff. But anyway, even if I want to follow thrift's include logic, it still means i have to copy my files to the right path manually, since thrift --gen php -o <somedir> generates the file under "gen-php" in this dir, and the generated code expects the types file to sit under $GLOBALS['THRIFT_ROOT'].'/packages/<MyService>/'. Doesn't it? On Mon, Jul 20, 2009 at 10:21 PM, Mark Slee <[email protected]> wrote: > The issue here is because of the way that PHP resolves include paths. It's > really bizarre and unexpected, but when you say "include <relative path>" in > PHP the path is NOT relative to the file that contains the statement, but > rather it is relative to the directory from which the PHP interpreter was > originally invoked. > > This is fine if you dump all your code into one big folder and run your > interpreter from there, but if you want to organize your code into folders, > the cleanest viable solution is to just switch to using absolute paths to > reference your files. This is why we define a THRIFT_ROOT and declare all > generated includes relative to that. > > There are also some benefits to using absolute paths if you are running PHP > on Apache with APC byte-code caching enabled. The absolute paths allow you > to avoid doing filesystem operations when you're checking for a script's > presence in the cache, you can just treat the absolute path as a simple > string key. > > -----Original Message----- > From: Dvir Volk [mailto:[email protected]] > Sent: Monday, July 20, 2009 5:52 AM > To: [email protected] > Subject: Re: wrong include paths in PHP > > I could, but I figured since in python it's not mandatory, there might be a > trick to achieve that in PHP as well... > > On Mon, Jul 20, 2009 at 3:37 PM, Patrick Schlangen <[email protected] > >wrote: > > > Hi, > > > > why don't you just use the directory structure suggested by Thrift? > > It's very logical and tidy. > > > > Patrick > > > > Am Montag 20 Juli 2009 um 02:34PM schrieb "Dvir Volk" <[email protected] > >: > > >Hi, > > >When I'm generating php from thrift files, I always get this thing: > > >if I generate a service called Foo, the output is 2 files, one is > > >FooService.php and the other Foo_types.php, FooService.php will contain > > the > > >following include: > > > > > >include_once $GLOBALS['THRIFT_ROOT'].'/packages/Foo/Foo_types.php'; > > > > > >when actually they are both located in the the same directory, and it > > should > > >just be: > > >include_once 'Foo_types.php'; > > > > > >How do I stop this behavior? It's driving me crazy editing generated > files > > >all the time... > > > > > > > > >
