Что такое PSR-1-совместимая альтернатива использованию ini_set ()?

Я нахожусь в процессе создания моей кодовой базы 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 а также max_execution_time в php.ini (который будет учитываться всеми стандартными сценариями / файлами), а затем увеличивать эти ограничения по мере необходимости, для меня это совершенно приемлемая и логичная реализация.

Однако я помню, что PSR-1 утверждает, что:

«Файлы ДОЛЖНЫ либо объявлять символы (классы, функции, константы и т. Д.), Либо вызывать побочные эффекты (например, генерировать выходные данные, изменять настройки .ini и т. Д.), Но НЕ ДОЛЖНЫ делать оба».

Затем он утверждает, что с помощью ini_set() пример побочного эффекта (по крайней мере, их пример показывает, что он используется вне области действия класса или функции):

<?php
// side effect: change ini settings
ini_set('error_reporting', E_ALL);

Эту документацию можно увидеть Вот

Поэтому мои вопросы:

  1. Является ли использование ini_set () в методе классов (согласно моему контексту) примером побочного эффекта?
  2. Если да, то какова альтернатива PSR-1?

Этому конкретному сценарию нужно разрешить большее использование памяти и время выполнения, но я не хочу просто увеличивать глобальные настройки php.ini для этого, так как это позволило бы всем другим процессам PHP использовать больше памяти и времени выполнения, которые они должны.

2

Решение

PSR-1 просто говорит о коде верхнего уровня в файле. Этот код верхнего уровня должен вызывать побочные эффекты или объявлять вещи.

В вашем примере вы определяете класс и его методы. Побочный эффект не возникает при загрузке файла, он возникает при вызове функции. Чтобы быть PSR-1-совместимым, этот вызов не должен быть в коде верхнего уровня этого файла.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]