Connecting Tech Pros Worldwide Help | Site Map

Including file Inside class

briandichiara
Guest
 
Posts: n/a
#1: Sep 8 '08
I'm trying to setup a class that will allow a file to be included on
the page. It goes something like:

<?php
class myClass {
... ... ...
function includeFile(){
if(file_exists($this->include_file)){
include($this->include_file);
} else {
$this->error("file missing");
}
}
... ... ...
}

$foo = "bar";

$page = new myClass();
$page->include_file = "the_file.php";
$page->includeFile();
?>

// the_file.php
<?php echo $foo; ?>



It has something to do with variable scope and accessing globals or
something, I'm not sure. My question is how should I setup my class so
that I do not have to use "return" at the bottom of any files I want
to include with my class? I want the includes to function just like
normal includes.

I tried

<?php
class myClass {
... ... ...
function includeFile(){
global $GLOBALS;
global $HTTP_SERVER_VARS;
if(file_exists($this->include_file)){
include($this->include_file);
} else {
$this->error("file missing");
}
}
... ... ...
}


but that still doesn't make $foo print "bar".

Thanks for any help on how to accomplish this.
briandichiara
Guest
 
Posts: n/a
#2: Sep 8 '08

re: Including file Inside class


Right now, i have found this solution by adding
extract($GLOBALS);
to the top of my function.

I would now like to somehow get the variables inside the include file
back into the global variable scope, making this function work just
like a normal include file. Is that possible?

On Sep 8, 11:35*am, briandichiara <briandichi...@gmail.comwrote:
Quote:
I'm trying to setup a class that will allow a file to be included on
the page. It goes something like:
>
<?php
class myClass {
* * *... ... ...
* * *function includeFile(){
* * * * * if(file_exists($this->include_file)){
* * * * * * * *include($this->include_file);
* * * * * } else {
* * * * * * * *$this->error("file missing");
* * * * * }
* * *}
* * *... ... ...
>
}
>
$foo = "bar";
>
$page = new myClass();
$page->include_file = "the_file.php";
$page->includeFile();
?>
>
// the_file.php
<?php *echo $foo; *?>
>
It has something to do with variable scope and accessing globals or
something, I'm not sure. My question is how should I setup my class so
that I do not have to use "return" at the bottom of any files I want
to include with my class? I want the includes to function just like
normal includes.
>
I tried
>
<?php
class myClass {
* * *... ... ...
* * *function includeFile(){
* * * * * global $GLOBALS;
* * * * * global $HTTP_SERVER_VARS;
* * * * * if(file_exists($this->include_file)){
* * * * * * * *include($this->include_file);
* * * * * } else {
* * * * * * * *$this->error("file missing");
* * * * * }
* * *}
* * *... ... ...
>
}
>
but that still doesn't make $foo print "bar".
>
Thanks for any help on how to accomplish this.
Jerry Stuckle
Guest
 
Posts: n/a
#3: Sep 8 '08

re: Including file Inside class


briandichiara wrote:
Quote:
Right now, i have found this solution by adding
extract($GLOBALS);
to the top of my function.
>
I would now like to somehow get the variables inside the include file
back into the global variable scope, making this function work just
like a normal include file. Is that possible?
>
On Sep 8, 11:35 am, briandichiara <briandichi...@gmail.comwrote:
Quote:
>I'm trying to setup a class that will allow a file to be included on
>the page. It goes something like:
>>
><?php
>class myClass {
> ... ... ...
> function includeFile(){
> if(file_exists($this->include_file)){
> include($this->include_file);
> } else {
> $this->error("file missing");
> }
> }
> ... ... ...
>>
>}
>>
>$foo = "bar";
>>
>$page = new myClass();
>$page->include_file = "the_file.php";
>$page->includeFile();
>?>
>>
>// the_file.php
><?php echo $foo; ?>
>>
>It has something to do with variable scope and accessing globals or
>something, I'm not sure. My question is how should I setup my class so
>that I do not have to use "return" at the bottom of any files I want
>to include with my class? I want the includes to function just like
>normal includes.
>>
>I tried
>>
><?php
>class myClass {
> ... ... ...
> function includeFile(){
> global $GLOBALS;
> global $HTTP_SERVER_VARS;
> if(file_exists($this->include_file)){
> include($this->include_file);
> } else {
> $this->error("file missing");
> }
> }
> ... ... ...
>>
>}
>>
>but that still doesn't make $foo print "bar".
>>
>Thanks for any help on how to accomplish this.
>
>
You need to rethink your approach.

I see what you're trying to do - but sometimes classes are not the right
way to go. And this is one of them.

Leave your include() in the global scope and you won't have these problems.

--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex@attglobal.net
==================

FutureShock
Guest
 
Posts: n/a
#4: Sep 8 '08

re: Including file Inside class


briandichiara wrote:
Quote:
I'm trying to setup a class that will allow a file to be included on
the page. It goes something like:
>
<?php
class myClass {
... ... ...
function includeFile(){
if(file_exists($this->include_file)){
include($this->include_file);
} else {
$this->error("file missing");
}
}
... ... ...
}
>
$foo = "bar";
>
$page = new myClass();
$page->include_file = "the_file.php";
$page->includeFile();
?>
>
// the_file.php
<?php echo $foo; ?>
>
>
>
It has something to do with variable scope and accessing globals or
something, I'm not sure. My question is how should I setup my class so
that I do not have to use "return" at the bottom of any files I want
to include with my class? I want the includes to function just like
normal includes.
>
I tried
>
<?php
class myClass {
... ... ...
function includeFile(){
global $GLOBALS;
global $HTTP_SERVER_VARS;
if(file_exists($this->include_file)){
include($this->include_file);
} else {
$this->error("file missing");
}
}
... ... ...
}
>
>
but that still doesn't make $foo print "bar".
>
Thanks for any help on how to accomplish this.
I am not sure what you are trying to accomplish but this works.

myClass.php

<?php
class myClass
{
public function _include($include) {
require $include;
//error checking needed
}
}
?>

inc.php

<?php
global $result; // Important!
echo $result;
?>


test.php

<?php
$result = "It Worked";
require 'my_class.php'; // If in same directory as code base.
$class = new myClass();
$class->_include('inc.php');
?>

This is uber-basic code to show the basics. Make sure you are pointing
to the actual include file.

Good Luck

Scotty
Closed Thread