我正在使我的代码库符合 PSR-2(因此符合 PSR-1)并且我遇到了以下代码:
public function init()
{
parent::init();
// Allow A Larger PHP Memory Limit For This Script
ini_set("memory_limit", "512M");
// Allow A Larger Script Execution Limit For This Script
ini_set('max_execution_time', 300);
}
这用于增加此特定脚本(仅站点管理员可以访问并且不经常运行)能够消耗的内存量和执行时间。
memory_limit
在 php.ini中设置默认值max_execution_time
(所有标准脚本/文件都会遵守),然后在需要时增加这些限制,这对我来说当然是一个完全可以接受且合乎逻辑的实现。
但是,我记得 PSR-1 指出:
“文件应该声明符号(类、函数、常量等)或引起副作用(例如生成输出、更改 .ini 设置等),但不应该两者都做。”
然后它继续说明 usingini_set()
是副作用的一个示例(至少他们的示例表明它在类或函数的范围之外使用):
<?php
// side effect: change ini settings
ini_set('error_reporting', E_ALL);
该文档可以在这里看到
因此,我的问题是:
- 在类方法(根据我的上下文)中使用 ini_set() 是副作用的一个例子吗?
- 如果是这样,符合 PSR-1 的替代方案是什么?
这个特定的脚本需要允许更多的内存使用和执行时间,但我不想仅仅为此增加全局 php.ini 设置,因为这将允许所有其他 PHP 进程使用它们应该使用的更多内存和执行时间。