2017-02-07 11 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を設定し、必要なときと、確かに私に完全に受け入れられると論理的な実装のような感じのようにこれらの制限を増やします。

しかし、私はそのPSR-1の状態にすることを覚えている:「ファイルは、シンボル(クラス、関数、定数など)や、原因の副作用を宣言(例:出力を生成し、.INI設定を変更する必要がありますいずれか

を等)しかし、両方をしてはならない(SHOULD NOT)。 "

それは次にini_set()を使用する副作用の一例である状態に進むが(少なくともそれらの例は、それがクラスまたは関数の範囲外で使用されている番組):

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

このドキュメントはできhere

を見ることが私の質問は、したがって、以下のとおりです。

  1. は(私のコンテキストごととして)側 - の例のクラスメソッド内でini_set()の使用です効果?
  2. もしそうなら、PSR-1に準拠した代替品は何ですか?

この特定のスクリプトは、メモリ使用量と実行時間を増やす必要がありますが、他のすべてのPHPプロセスでより多くのメモリを使用できるように、グローバルphp.iniの設定を増やしたくありません。彼らが実行すべき実行時間。

答えて

2

PSR-1は、ファイル内のトップレベルコードについて説明しています。その最上位レベルのコードは、副作用や宣言を引き起こしているはずです。

この例では、クラスとそのメソッドを定義しています。ファイルをロードするときに副作用は起こりません。関数を呼び出すと発生します。 PSR-1に準拠するには、その呼び出しがこのファイルのトップレベルコードに含まれていてはなりません。

+0

ini_set()への呼び出しがクラス内のメソッド内にあるため、「副作用」が発生しないため、コードはすでにPSR-1に準拠しています。 –

+1

もちろん、それらは副作用を引き起こす、それは全体のポイントです。しかし、副作用はメソッドが呼び出されたときに発生し、ファイルをロードしたときには発生しません。 – Barmar

関連する問題