thrift-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mark Slee <ms...@facebook.com>
Subject RE: wrong include paths in PHP
Date Mon, 20 Jul 2009 19:50:07 GMT
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:dvirsky@gmail.com] 
Sent: Monday, July 20, 2009 12:39 PM
To: thrift-user@incubator.apache.org
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 <mslee@facebook.com> 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:dvirsky@gmail.com]
> Sent: Monday, July 20, 2009 5:52 AM
> To: thrift-user@incubator.apache.org
> 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 <p.schlangen@mac.com
> >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" <dvirsky@gmail.com
> >:
> > >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...
> > >
> > >
> >
>

Mime
View raw message