| 
	
 | 
 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] 
 |