I'm receiving this fatal error message: Using $this when not in object context.
This class is setted up as a library in the CodeIgniter.
This is my class:
class My_class {
function __construct()
{
$this->app = base_url('application') . '/cache/';
if ($this->expire_after == '')
{
$this->expire_after = 300;
}
}
static function store($key, $value)
{
$key = sha1($key);
$value = serialize($value);
file_put_contents( $this->app . $key.'.cache', $value);
}
}
I'm initializing it via autoload.php.
The line it is throwing the error at:
file_put_contents( $this->app . $key.'.cache', $value);
Where is my problem?
You can't use $this in a static method. The variable $this is only available to class methods as these receive the object on which the method is called.
That's what "when not in object context" means: there's no object passed to that static method because it's static. A static method is part of the class, not part of the objects that are instantiated using that class.
$this will not be available in a static function. You'll probably want to re-create $app within the static function:
static function store($key, $value)
{
$app = base_url('application') . '/cache/';
$key = sha1($key);
$value = serialize($value);
file_put_contents( $app . $key.'.cache', $value);
}
I'm not quite sure what you're trying to do in the grand context of your application, but you may not even need a static method in the first place.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With