1

あまりにも一般的なコード行を検索する必要があるという問題に直面しています。

次のコードがあり、それを array_merge に変換する必要があるとします。

$this['data'][] = array(
    'firstname'      => $query->row['firstname'],
    'lastname'       => $query->row['lastname'],
    'company'        => $query->row['company'],
    'company_id'     => $query->row['company_id']
);

vqmod

<operation>
    <search position="replace"><![CDATA[
    $this['data'][] = array( ]]></search>
    <add><![CDATA[
    $this['data'][] = array_merge($data, array( ]]></add>
</operation>
<operation>
    <search position="replace"><![CDATA[
    ); ]]></search>
    <add><![CDATA[
    )); ]]></add>
</operation>

これの問題は、あまりにも一般的なコードを検索しようとしていることです。

この同じ配列を変更する他の拡張機能を使用しているため、オフセットを使用してすべてを置き換えることができます。また、company_id が常に最後であることも信頼できません。

代わりに、2回検索する方法や、この概念に似た方法があるかどうかを考えていました。

  1. 検索:$this['data'][] = array(この行番号を見つけます。
  2. 次に、この行番号から次の検索を開始し、次に出現するものを見つけます。);

これと同じ考え方を、返されるデータの前に何らかのロジックを追加したいメソッドに適用できます。

<operation>
    <search position="before"><![CDATA[
    private static function _cacheName ]]></search>
    <search2><![CDATA[
    return ]]></search2>
    <add><![CDATA[
    // custom code ]]></add>
</operation>
4

1 に答える 1