小编Joe*_*vey的帖子

使用 ini_set() 的 PSR-1 兼容替代方案是什么?

我正在使我的代码库符合 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);
}
Run Code Online (Sandbox Code Playgroud)

这用于增加此特定脚本(只能由站点管理员访问并且不经常运行)能够消耗的内存量和执行时间。

在 php.ini 中设置默认值memory_limitmax_execution_time(所有标准脚本/文件都会遵守),然后在需要时增加这些限制,对我来说当然感觉是一个完全可以接受和合乎逻辑的实现。

但是,我记得 PSR-1 声明:

“文件应该声明符号(类、函数、常量等)或引起副作用(例如生成输出、更改 .ini 设置等),但不应同时进行。”

然后继续说明 usingini_set()是副作用的一个例子(至少他们的例子表明它在类或函数的范围之外使用):

<?php
// side effect: change ini settings
ini_set('error_reporting', E_ALL);
Run Code Online (Sandbox Code Playgroud)

可以在此处查看此文档

因此,我的问题是:

  1. 在类方法中(根据我的上下文)使用 ini_set() 是副作用的一个例子吗?
  2. 如果是这样,什么是符合 PSR-1 的替代方案?

这个特定的脚本需要有更多的内存使用和执行时间,但我不想只为此增加全局 php.ini 设置,因为这将允许所有其他 PHP 进程使用更多的内存和执行时间。

php ini ini-set side-effects psr-1

3
推荐指数
1
解决办法
273
查看次数

标签 统计

ini ×1

ini-set ×1

php ×1

psr-1 ×1

side-effects ×1