У меня есть проблема, когда я устанавливаю статическую переменную (к которой я обращаюсь только в том классе, в котором она определена), но в следующий раз, когда метод в этом же классе (все методы статические, кстати), внезапно становится нулевым. Я проверил, и нет метода доступа к этой переменной. Я что-то упускаю?
class Foo {
private static $var;
public static function setTest($a) {
self::$var = $a;
}
public static function getTest() {
return self::$var;
}
}
——Редактировать——
Это тот класс, над которым я работаю:
<?php
/**
* Class Cache
*/
class Cache
{
/**
* @var
*/
private static $cachedir;
private static $checked = true;
/**
* @param $file_contents
* @param string $class
*/
public static function add($file_contents, $class = "", $method = "")
{
if (empty($class)) {
$trace = debug_backtrace();
if (!empty($trace[1])) {
$class = $trace[1]["class"];
$method = $trace[1]["function"];
}
}
$cachedir = self::getDir();
\Dir::make($cachedir . "/" . $class);
\File::put($cachedir . "/" . $class, $method . ".cache", base64_encode(serialize($file_contents)));
}
/**
* @return mixed
*/
public static function getDir()
{
$cachedir = self::$cachedir;
if (empty($cachedir)) {
$cachedir = self::init();
}
return $cachedir;
}
/**
* @param mixed $cachedir
*/
public static function setDir($cachedir)
{
self::$cachedir = $cachedir;
}
/**
*
*/
public static function init()
{
$user = \Auth::user();
if (empty($user)) {
return false;
}
$cachedir = "cache/" . session_id() . "-" . $user["uid"];
if (!\File::exists($cachedir . "/Cache/create_date.cache")) {
self::setDir($cachedir);
\Dir::make($cachedir);
self::add(new \DateTime(), "Cache", "create_date");
if (!\File::exists(APP_PATH . "/" . $cachedir . "/Env/environment.cache")) {
self::add(\Env::getSettings(), "Env", "environment");
}
} elseif (self::$checked) {
// $created_at = self::get("Cache", "create_date");
// self::$checked = true;
// dd($created_at);
}
return $cachedir;
}
/**
* @param string $class
* @param string $method
* @return mixed
*/
public static function get($class = "", $method = "")
{
if (empty($class)) {
$trace = debug_backtrace();
if (!empty($trace[1])) {
$class = $trace[1]["class"];
$method = $trace[1]["function"];
}
}
$cachedir = self::getDir();
if (!empty($cachedir)) {
$path = APP_PATH . "/" . $cachedir . "/" . $class . "/" . $method . ".cache";
if (\File::exists($path)) {
$file = \File::get($path);
return unserialize(base64_decode($file));
}
}
return false;
}
}
Задача ещё не решена.
Других решений пока нет …