2017-02-07 19 views
1

가 내 코드 기반을 만드는 과정에서 오전 PSR-2 규격 (따라서 PSR-1 호환) 내가 다음 코드를 가로 질러 온 : 메모리의 양을 증가하는 데 사용됩니다ini_set()을 사용하는 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_limitmax_execution_time을 설정 한 다음 필요에 따라 이러한 제한을 늘리면 필자에게 완벽하게 수용 가능하고 논리적 인 구현이라고 느껴집니다.

하지만, I 기억이 PSR 1의 상태 있음 :

"파일 심볼 (클래스, 함수, 상수 등)을 선언하거나 부작용 (예를 들면, 출력을 생성 .INI 설정 변경 야기해야한다 역시 등)하지만 둘 다하지 않아야합니다. "

그런 다음 ini_set()을 사용하여 부작용의 예는 그 상태로 진행는 (적어도 그 예는이 클래스 또는 기능의 범위에 사용되는 도시)

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

이 문서 수 here

를 볼 수 내 질문에 따라서 다음과 같습니다

  1. 이 (내 상황에 따라)를 사이 드의 예 A 클래스 메소드 내 위해서는 ini_set의 사용()인가 효과?
  2. 그렇다면 PSR-1 호환 대체품은 무엇입니까?

이 특정 스크립트는 더 큰 메모리 사용과 실행 시간을 허용해야하지만, 다른 모든 PHP 프로세스가 더 많은 메모리와 메모리를 사용할 수 있도록 전역 php.ini 설정을 늘리고 싶지는 않습니다. 실행 시간.

답변

2

PSR-1은 파일의 최상위 코드를 말하는 것입니다. 이 최상위 코드는 부작용을 유발하거나 선언해야합니다.

예를 들어, 클래스와 메소드를 정의하고 있습니다. 부작용은 파일을로드 할 때 발생하지 않으며 함수를 호출 할 때 발생합니다. PSR-1을 준수하려면이 호출이이 파일의 최상위 코드에 없어야합니다.

+0

ini_set()에 대한 호출이 클래스 내에있는 메서드 내에서 수행되면 '부작용'이 발생하지 않으므로 내 코드가 이미 PSR-1을 준수한다고 말하는 것입니다. –

+1

그들은 부작용을 일으키는 것은 물론, 그게 전부입니다. 그러나 부작용은 메서드를 호출 할 때 발생하며 파일을로드 할 때 발생하지는 않습니다. – Barmar