我正在使我的代码库符合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);
}
用于增加此特定脚本(只能由站点管理员访问并且不经常运行)的内存量和执行时间能够消耗。
在php.ini中设置默认的memory_limit
和max_execution_time
(将受到所有标准脚本/文件的尊重),然后在需要时增加这些限制,当然感觉是完全可以接受的逻辑实施给我。
但是,我记得PSR-1声明:
"文件应该声明符号(类,函数,常量等)或引起副作用(例如生成输出,更改.ini设置等),但不应该同时执行这两种操作。"
然后继续说明使用ini_set()
是一个副作用的例子(至少他们的例子显示它在类或函数的范围之外使用):
<?php
// side effect: change ini settings
ini_set('error_reporting', E_ALL);
可以看到此文档here
我的问题是:
这个特殊的脚本需要允许更大的内存使用和执行时间,但我不想只为此增加全局php.ini设置,因为这将允许所有其他PHP进程使用更多的内存和执行时间他们应该。
答案 0 :(得分:3)
PSR-1正在谈论文件中的顶级代码。该顶级代码应该导致副作用或声明事物。
在您的示例中,您将定义一个类及其方法。加载文件时不会发生副作用,当您调用该函数时会发生这种情况。要符合PSR-1,该调用不应该在此文件的顶级代码中。