2017-01-23 10 views
0

私は設定ファイルを持っています。とりわけ、値と呼び出し可能ファイルの束を定義しています。私はこのファイルの定義のいくつかを更新する必要がある開発ツールを書いています。ファイルを読み込んで、ファイル内のコメントで定義された特定のポイントに文字列を書き込むのではなく、これを行う方法について考えることはできません。新しいコードでPHPファイルを更新/操作する

私のファイルは次のようになります想像:

<?php 

$things = [ 
    'a_thing' => 'some value', 
    'callable_thing' => function() { 
     return SomeClass(); 
    } 
    // END THINGS 
]; 

私はアルファベット順で、この配列(任意の有効な選択肢となる可能性があるの値)に新しい配列のキーを挿入したいと思います。これは可能でしょうか?次に特別にフォーマットされたコメント(「// END THINGS」のコメント)を「ターゲット」として挿入して挿入しますが、それはかなりハッキーであり、アルファベット順の要件を満たしていません。

私は自己変異コードの意味を認識しています。これは開発者向けのツールであり、新しいプロジェクトを設定する際には、ローカルのファイル - >作成 - >更新タスクを自動化するためにのみ使用されます。

答えて

1

var_export()関数を使用して、評価可能な方法で変数の値を出力することができます。したがって、ファイルをinclude($filename);でロードし、$thingsの内容を変更します。次に、ファイルを更新することができます:

$contents = '$things = ' . var_export($things, true) . ';'; 
file_put_contents($filename, $contents); 
+0

ありがとう!閉じるが、私はそれが非スターターだと思う。関数のクロージャ内でコードを維持できる必要があります。クイックテストを行い、 'callable_thing'に対して' Closure :: __ set_state(array()) 'を返します。私はこれを達成するためにいくつかの厄介な正規表現を行う必要があるかもしれないと思う:( – HelloPablo

+0

私はあなたがそこに関数を持っていることに気付かなかった。関数名を配列に入れますか? – Barmar

+0

悲しいことに、私はコメント "marker"を使用して、その前にテキストを置いていましたが、すべてのボックスをチェックしていませんでした。 – HelloPablo

関連する問題