如何将文件内容存储在变量中并使该变量在其他地方可用?
How to store file content in a variable and make that variable available elsewhere?
我的侧边栏包含在我的所有视图中都相同的元素,因此我没有在我的所有控制器中一遍又一遍地调用它们,而是创建了一个 MY_Controller class 并从那里提供变量.问题是,我的变量的内容来自一个文件,所以现在每次加载我的网站时,我都会调用读取文件。有人向我指出这不太好。
所以我想做的是读取模型中的文件,然后将其存储在一个变量中,然后将该变量传递给 MY_Controller。问题是我现在才面临同样的问题,而不是从 MY_Controller 中读取文件,而是从模型中读取文件。因此,我尝试在不同的函数中创建一个在我的整个模型中可用的变量,然后创建一个 returns 该变量的函数,但它不起作用。这是我的代码:
型号:
class My_model extends CI_Model {
public $report = null;
function read_file()
{
$this->report = file_get_contents('/path/to/file');
}
function get_file()
{
return $this->report;
}
}
MY_Controller:
class MY_Controller extends CI_Controller {
public function __construct()
{
parent::__construct();
$this->load->model('My_model');
$report = $this->My_model->get_file();
...
}
}
现在$report
正在返回 null。
read_file()
函数应该每天调用一次,因为文件每天早上更新。任何提示是否可以做我正在尝试的事情,或者如果有更好的方法,将不胜感激。
我不会给你代码,因为这会花太长时间,但我会解释 Symfony2 是如何做到的。听说过 Twig 吗?嗯,不管你熟悉不熟悉,重要的是它是如何编译模板的。
它将所有模板逻辑和文本编译为 PHP 文件,其中包含生成的函数和字符串。第一次执行模板时执行此编译。第二次,重新使用编译好的PHP
有效的 IO 仍然发生,但仅在包含的 PHP 页面上发生。您可以通过将整个源引导到一个文件中来再次消除这种情况(Symfony 使用库而不是模板来实现)。
因此,为了 "cache" 您的内容到 PHP,您需要编写 PHP 转储程序(或使用现有转储程序),或使用 var_export
在简单的数据结构上转储预加载的数据。
你应该在get_file之前调用read_file函数,而且调用函数read_file和更新文件没有关系。
我的侧边栏包含在我的所有视图中都相同的元素,因此我没有在我的所有控制器中一遍又一遍地调用它们,而是创建了一个 MY_Controller class 并从那里提供变量.问题是,我的变量的内容来自一个文件,所以现在每次加载我的网站时,我都会调用读取文件。有人向我指出这不太好。
所以我想做的是读取模型中的文件,然后将其存储在一个变量中,然后将该变量传递给 MY_Controller。问题是我现在才面临同样的问题,而不是从 MY_Controller 中读取文件,而是从模型中读取文件。因此,我尝试在不同的函数中创建一个在我的整个模型中可用的变量,然后创建一个 returns 该变量的函数,但它不起作用。这是我的代码:
型号:
class My_model extends CI_Model {
public $report = null;
function read_file()
{
$this->report = file_get_contents('/path/to/file');
}
function get_file()
{
return $this->report;
}
}
MY_Controller:
class MY_Controller extends CI_Controller {
public function __construct()
{
parent::__construct();
$this->load->model('My_model');
$report = $this->My_model->get_file();
...
}
}
现在$report
正在返回 null。
read_file()
函数应该每天调用一次,因为文件每天早上更新。任何提示是否可以做我正在尝试的事情,或者如果有更好的方法,将不胜感激。
我不会给你代码,因为这会花太长时间,但我会解释 Symfony2 是如何做到的。听说过 Twig 吗?嗯,不管你熟悉不熟悉,重要的是它是如何编译模板的。
它将所有模板逻辑和文本编译为 PHP 文件,其中包含生成的函数和字符串。第一次执行模板时执行此编译。第二次,重新使用编译好的PHP
有效的 IO 仍然发生,但仅在包含的 PHP 页面上发生。您可以通过将整个源引导到一个文件中来再次消除这种情况(Symfony 使用库而不是模板来实现)。
因此,为了 "cache" 您的内容到 PHP,您需要编写 PHP 转储程序(或使用现有转储程序),或使用 var_export
在简单的数据结构上转储预加载的数据。
你应该在get_file之前调用read_file函数,而且调用函数read_file和更新文件没有关系。