Require another file in php class objects
Suppose I have the following code:
a.php
<?
class H{
public $i = 123;
public function S(){
require "b.php";
die;
}
}
$i = new H();
$i -> S();
b.php
<?
echo $i->i;
However, system throws an error in file b.php that variable i is not defined.
How can I fix this problem?
If it's possible, could someone kindly tell me why this is happening?
Answer
Solution:
You should never include a file like that in case of OOP. As oop and procedural PHP is different. Whenever you want to echo anything inside the class you should use $this keyword that signifies that you are working in context of current class object. So thats why your code is not working and you are getting that variable i is not defined. As nathanael said its not an elegant way of coding
Answer
Solution:
you can write in b.php
echo $this->i;
and that would work, but that is not an elegant way of coding,
alternatively you can make $i accessible in S() in a.php you would have
public function S(){
global $i;
require "b.php";
die;
}
And that would work also, but is no more elegant
when you require b.php in the method S(), it will inject the code from b.php inside the method S(), and there is no variable $i
you have a global variable $i, which is not accessible from S() unless you explicitly make it accessible