1

getContent()を使用して関数に取り込まれる引数を持つ関数への呼び出しがいくつかありますfunc_get_args()。いくつかの引数は同じままであり、これらすべての関数呼び出しで繰り返される引数を複製する必要がないように、それらを変数として設定したいと考えています。

以下は、完全な引数を指定した関数呼び出しの例です。

<? getContent(
    "article",
    "display:list",
    "find_series:team",
    "find_category:pastors-team",
    "order:series",
    "find_parent_category:team",
    "show:<div class='box box_stories'>",
    "show:<div class='box_pad box_img bwWrapper'>",
    "show:<div class='box_inner_pad'>",
    "show:<h3><a href='/staff-detail/__slug__'>__authorX__</a></h3>",
    "show:<p class='teamsummary'>__summary__</p>",
    "show:<p class='phone_icon'>__authorXworkphone__</p>",
    "show:</div>",
    "show:</div>",
    "show:</div>"
); 
?>

理想的には、次のようなことができます。

<? $myStyle = 
    "show:<div class='box box_stories'>",
    "show:<div class='box_pad box_img bwWrapper'>",
    "show:<div class='box_inner_pad'>",
    "show:<h3><a href='/staff-detail/__slug__'>__authorX__</a></h3>",
    "show:<p class='teamsummary'>__summary__</p>",
    "show:<p class='phone_icon'>__authorXworkphone__</p>",
    "show:</div>",
    "show:</div>",
    "show:</div>";

getContent(
    "article",
    "display:list",
    "find_series:team",
    "find_category:leadership-team",
    "order:series",
    "find_parent_category:team",
    $myStyle
);

getContent(
    "article",
    "display:list",
    "find_series:team",
    "find_category:executive-team",
    "order:series",
    "find_parent_category:team",
    $myStyle
); ?>

これは可能ですか?これにアプローチする最良の方法は何ですか?

注: getContent() 関数は変更できません。これは CMS のコア関数です。

4

4 に答える 4

1

残念ながら、これは不可能です。あなたが今持っているのは、、、などと(配列である必要があります)を渡してarticledisplayます$myStyle。十分な引数を渡していないため、エラーが発生します。

getContent()可能であれば、デフォルトのパラメーターがあるかどうかを確認してください。

于 2012-08-02T19:10:36.887 に答える
1

これは私が考えることができる最も単純なものです:

call_user_func_array('getContent',array_merge(array(
    "article",
    "display:list",
    "find_series:team",
    "find_category:executive-team",
    "order:series",
    "find_parent_category:team",
    ),$myStyle)
);

編集:Yazmatのソリューションはおそらくより良いでしょう。
次のように可変数の引数で使用できます。

<?php
function myGetContent() {
    $defaults = array(
        "show:<div class='box box_stories'>",
        "show:<div class='box_pad box_img bwWrapper'>",
        "show:<div class='box_inner_pad'>",
        "show:<h3><a href='/staff-detail/__slug__'>__authorX__</a></h3>",
        "show:<p class='teamsummary'>__summary__</p>",
        "show:<p class='phone_icon'>__authorXworkphone__</p>",
        "show:</div>",
        "show:</div>",
        "show:</div>"
    );
    return call_user_func_array('getContent',array_merge(func_get_args(), $defaults));
}
于 2012-08-02T19:11:16.830 に答える
1

必要な引数のみを受け取り、それらの引数とデフォルトの引数を使用して getContent() 関数を呼び出す独自の関数を作成できます。getContent() の代わりにこの新しい関数を使用します

編集 :

あなたはこのようなことをします:

<?php
function myGetContent($param1,$param2,$param3,$param4,$param5,$param6){
  return getContent(
    $param1,
    $param2,
    $param3,
    $param4,
    $param5,
    $param6,
    "show:<div class='box box_stories'>",
    "show:<div class='box_pad box_img bwWrapper'>",
    "show:<div class='box_inner_pad'>",
    "show:<h3><a href='/staff-detail/__slug__'>__authorX__</a></h3>",
    "show:<p class='teamsummary'>__summary__</p>",
    "show:<p class='phone_icon'>__authorXworkphone__</p>",
    "show:</div>",
    "show:</div>",
    "show:</div>"
  );
}

そして、次のように呼び出します。

myGetContent(
    "article",
    "display:list",
    "find_series:team",
    "find_category:leadership-team",
    "order:series",
    "find_parent_category:team"
);
于 2012-08-02T19:12:53.813 に答える
0

あなたはこれを必要とします?

<?php

getContent(
    array(
        'type'                  => 'article',
        'display'               => 'list',
        'find_series'           => 'team',
        'find_category'         => 'leadership-team',
        'order'                 => 'series',
        'find_parent_category'  => 'team'
    ),
    array(
        '<div class="box box_stories">',
        '<div class="box_pad box_img bwWrapper">',
        '<div class="box_inner_pad">',
        '<h3><a href="/staff-detail/__slug__">__authorX__</a></h3>',
        '<p class="teamsummary">__summary__</p>',
        '<p class="phone_icon">__authorXworkphone__</p>',
        '</div>',
        '</div>',
        '</div>'
    )
);


function getContent($argv, $shows){
    echo '<p>'.$argv['type'].'</p>';
    echo '<p>'.$argv['list'].'</p>';
    /* ... etc ... */

    echo '<pre>'.htmlspecialchars(print_r($argv, true), ENT_QUOTES).'</pre>';
    echo '<pre>'.htmlspecialchars(print_r($shows, true), ENT_QUOTES).'</pre>';
}
于 2012-08-02T19:34:14.577 に答える