0

Google と SO で私の問題を見つけることができませんでした。うまくいけば、私はあなたを説明することができます.

次の関数を見ればわかります。

function get_page($identity)
{
    if($identity is id)
       $page = $this->get_page_from_model_by_id($identity);
    elseif($identity is alias)
       $page = $this->get_page_from_model_by_alias($identity);
}

私の使用した機能:

get_page(5); // with id
or
get_page('about-us'); // with alias
or
get_page(5, 'about-us'); // with both

idパラメータを関数またはに送信したいalias。識別子は 1 つだけにする必要があります。

私はしたくないfunction get_page($id, $alias)

パラメータタイプを1つだけで取得して知るにはどうすればよいですかvariable。機能はありますか、それとも可能ですか?

4

5 に答える 5

1
if(is_numeric($identity)) {
    $page = $this->get_page_from_model_by_id($identity);
}
elseif(is_string($identity)) {
    $page = $this->get_page_from_model_by_alias($identity);
}
elseif(func_num_args() === 2) {
    $id = func_get_arg(0);
    $alias = func_get_arg(1);
    //do stuff
}
于 2013-09-19T14:00:29.370 に答える
0

あなたは利用する必要がありますfunc_get_args()

<?php
function foo()
{
    $numargs = func_num_args();
    echo "Number of arguments: $numargs<br />\n";
    if ($numargs >= 2) {
        echo "Second argument is: " . func_get_arg(1) . "<br />\n";
    }
    $arg_list = func_get_args();
    for ($i = 0; $i < $numargs; $i++) {
        echo "Argument $i is: " . $arg_list[$i] . "<br />\n";
    }
}

foo(1, 2, 3);
?>

ソース

于 2013-09-19T13:58:07.400 に答える
0

完全な解決策は次のとおりです。

function get_page()
{
    $alias = false;
    $id = false;
    foreach(func_get_args() as $arg)
        if(is_string($arg))
             $alias = $arg;
        else if(is_int($arg))
             $id = $arg;

}
于 2013-09-19T13:58:38.957 に答える