|  | Posted by Rik on 08/01/07 17:33 
On Wed, 01 Aug 2007 19:26:50 +0200, charliefortune  <google@charliefortune.com> wrote:
 
 > On 1 Aug, 17:30, ZeldorBlat <zeldorb...@gmail.com> wrote:
 >> On Aug 1, 12:19 pm, charliefortune <goo...@charliefortune.com> wrote:
 >>
 >>
 >>
 >> > On 1 Aug, 17:16, Rik <luiheidsgoe...@hotmail.com> wrote:
 >>
 >> > > On Wed, 01 Aug 2007 18:04:14 +0200, charliefortune
 >>
 >> > > <goo...@charliefortune.com> wrote:
 >> > > > I have been including local .php files in a script succesfully
 >> for a
 >> > > > while. But now I want it to be a remote include i.e.
 >>
 >> > > > include ("http://myserver.co.uk/includes/classLib.php");
 >>
 >> > > > and I get
 >>
 >> > > > Cannot instantiate non-existent class:
 >>
 >> > > > I know the path is correct because if I include simply a line of
 >> text
 >> > > > to echo then it works fine. Are there any issues with variable
 >> scope
 >> > > > when including remote classes please ? My class definition is
 >> simply
 >>
 >> > > > class AdminLib {
 >> > > >      blah blah;
 >> > > >      blah;
 >> > > >      blah;
 >> > > >      }
 >>
 >> > > > do I have to declare it global or anything ? Thanks.
 >>
 >> > > If the include works fine (no allow_url_fopen or the remote include
 >> > > thingy): don't forget they need to start & end with php opening &
 >> closing
 >> > > tags... Else it's 'just content'.
 >>
 >> > > Class definitions have no scope, allthough PHP6 might have support
 >> for
 >> > > namespaces.
 >>
 >> > The include is wrapped in  <?php ?> tags so that's not the problem. I
 >> > don't know about the allow_url_fopen stuff. Is there an fread
 >> > alternative I could do to read the file and eval() it perhaps, just to
 >> > get it working ?
 >>
 >> When you do a remote include like that the you usually don't get the
 >> actual code back since the remote server is typically configured to
 >> run it through PHP before sending the output.  Suppose your remote
 >> file has this in it:
 >>
 >> <?php
 >> class Foo {
 >>
 >> }
 >>
 >> ?>
 >>
 >> If you request that file in your browser what do you get?  You get
 >> nothing since that script has no output.  So, when you do the include,
 >> he doesn't get any output either.
 >>
 >> Remember: when you request a PHP file through a webserver you don't
 >> actually get the PHP code back -- you get the output of the PHP script
 >> back.
 >
 > When I go to the url, I get nothing because, like you say, the script
 > doesn't produce anything, it is just a single class definition, and is
 > being parsed before being returned.
 
 
 On the server with the definition:
 file: givememyclassdefinitioninplainphp.php
 <?php
 readfile('myClass.php');
 ?>
 
 Then again, I would never never never get class definitions this way. Too
 much overhead, huge security risks, slow, waiting for a
 connection-error/incomplete file to happen etc.
 
 >
 >  So how does one go about reusing class definitions from remote
 > sources please ?
 >
 
 I would keep a local copy, keep a CVS or SVN repository of the class
 definitions, and update now and then according to need.
 
 
 --
 Rik Wasmus
  Navigation: [Reply to this message] |