0

SEO に適した URL を使用してコンテンツ管理システムを作成しようとしています。私の問題は、htaccess を使用して URL をパススルーしたこと$_GET['url']です。

「call_user_func_array」の引数を取得するには、次のように爆発$_GET['url']させています/

ユーザーが SEO に適した URLS WITHスラッシュ ( /) へのショートタグを作成できるようにしているため、ショートタグが追加の引数として渡されることがあります。呼び出しクラス/関数内ですべての引数を再度収集する方法はありますか?

4

2 に答える 2

2
$args = func_get_args();

関数に渡されたすべての引数の配列を提供します。call_user_func_array()これは、実際に;を使用して行ったことを元に戻しています。

于 2011-03-16T11:57:00.833 に答える
2

オプション 1 (array(array) を に渡すcall_user_func_array):

$urls = explode('/', $_GET['url']);

// note that $urls already was an array
call_user_func_array(array('ClassName', 'MethodName'), array($urls));

// inside class ClassName    
function MethodName($urls) { // $urls is passed as array

}


オプション 2 (を使用func_get_args):

$urls = explode('/', $_GET['url']);

// pass the array itself as argument, each split is new function argument
call_user_func_array(array('ClassName', 'MethodName'), $urls);

// inside class ClassName
function MethodName() { // this function has many arguments

    $urls = func_get_args(); // gets all arguments into array
}


オプション 3 (call_user_funcの代わりに使用call_user_func_array):

$urls = explode('/', $_GET['url']);

// pass the array itself as argument
call_user_func(array('ClassName', 'MethodName'), $urls);

// inside class ClassName
function MethodName($urls) { // call_user_func will pass any argument on directly

}


おそらく、オプション 3 が最も適切です。ただし、関数にさらに引数を追加する場合は拡張性が制限されますが、これはオプション 2 にも当てはまります。

于 2011-03-16T11:59:25.553 に答える