PHP, argümanlar değil, bir Array olarak bir Array Passing

3 Cevap php

Ben PHP standardına func($arg1, $arg2) şekilde içine dizi başvurusunun kaldırılması, bir işlev için bağımsız bir listesi olarak bir dizi geçmek için bir yol olduğunu unutmayın görünmektedir. Ama şimdi ben bunu nasıl kaybettim. Gelen parametreleri "glob" için nasıl başvuru, geçen şeklini hatırlamıyorum ... ama nasıl argümanlar bir liste halinde de liste dizi için.

Bu func(&$myArgs) kadar basit olabilir, ama öyle değil eminim. Ama, ne yazık ki, php.net manuel şimdiye kadar bir şey ifşa değil. Ben geçen yıl ya da öylesine için bu özel özelliği kullanmak zorunda kalmıştım değil.

3 Cevap

Ayrıca bir dizi için bir örnek yöntemini uygulamak istiyorsanız, siz işlevi geçmesi gerektiğini unutmayın:

call_user_func_array(array($instance, "MethodName"), $myArgs);

Bütünlüğü uğruna, PHP 5.1 gibi bu da, çalışır:

<?php
function title($title, $name) {
    return sprintf("%s. %s\r\n", $title, $name);
}
$function = new ReflectionFunction('title');
$myArray = array('Dr', 'Phil');
echo $function->invokeArgs($myArray);  // prints "Dr. Phil"
?>

Bkz: http://php.net/reflectionfunction.invokeargs.php

Yöntemler için yerine ReflectionMethod::invokeArgs kullanmak ve ilk parametre olarak nesne geçmek.