我应该如何在 CodeIgniter4 中组织我的文件结构以节省内存?
How should I organize my file structure in CodeIgniter4 to save memory?
在我的 CodeIgniter4 代码库中,我目前有一些文件已设置为库,其中包含执行广泛用途的函数并且通常与我的数据库中的特定表相关。这些库的功能包括:
- 数据分析和格式化(例如从多个模型中提取数据,执行一些计算,并将其格式化以便在视图中显示)
- 内容存储和过滤(例如,根据实体的数据确定应显示的消息)
- 表单提交计算(可能会很多,不想让Controller超载)
这些库可以从多个控制器访问,甚至可以从其他一些库访问。问题是我不知道它们是否应该是 Libaries 或者是否应该设置为其他东西。每次访问库时我都不需要新的库实例,因为那可能会浪费内存。理想情况下,它们将被设置为模型并通过共享实例的工厂访问,但这些文件不直接管理来自应用程序的数据。
有什么建议吗?
您仍然可以将这些文件设置为一个库,但随后创建一个服务,以便在您访问库的共享实例时。
服务函数的外观如下:
public static function exampleService($getShared = true)
{
if ($getShared) {
return static::getSharedInstance('exampleService');
}
return new ExampleLibrary();
}
然后这是访问库的控制器(或其他库)的构造函数:
public function __construct()
{
$this->example = service('exampleService');
}
在我的 CodeIgniter4 代码库中,我目前有一些文件已设置为库,其中包含执行广泛用途的函数并且通常与我的数据库中的特定表相关。这些库的功能包括:
- 数据分析和格式化(例如从多个模型中提取数据,执行一些计算,并将其格式化以便在视图中显示)
- 内容存储和过滤(例如,根据实体的数据确定应显示的消息)
- 表单提交计算(可能会很多,不想让Controller超载)
这些库可以从多个控制器访问,甚至可以从其他一些库访问。问题是我不知道它们是否应该是 Libaries 或者是否应该设置为其他东西。每次访问库时我都不需要新的库实例,因为那可能会浪费内存。理想情况下,它们将被设置为模型并通过共享实例的工厂访问,但这些文件不直接管理来自应用程序的数据。
有什么建议吗?
您仍然可以将这些文件设置为一个库,但随后创建一个服务,以便在您访问库的共享实例时。
服务函数的外观如下:
public static function exampleService($getShared = true)
{
if ($getShared) {
return static::getSharedInstance('exampleService');
}
return new ExampleLibrary();
}
然后这是访问库的控制器(或其他库)的构造函数:
public function __construct()
{
$this->example = service('exampleService');
}