Переносить переменную в функцию в php - PullRequest
1 голос
/ 27 января 2020

У меня проблемы с областью действия и функциями. Если заменить мою переменную строкой, она функционирует, поэтому моя проблема, по-видимому, сводит переменную в функцию.

$this_project_ID =  $get_project_id[0]->ID;
echo $this_project_ID; //This prints out correctly an integer

add_filter('woocommerce_checkout_get_value', function($input, $key ) {
    global $this_project_ID;

    switch ($key) :
        case 'billing_project_id':  
            return $this_project_ID; //This doesn't resolve unless I use a string
        break;
    endswitch;
    }, 10, 2); 

Чего я не понимаю о введении переменной в функцию или это потому, что эта конкретная функция требуется что-то еще? Заранее спасибо.

Итак, вот решение, благодаря вам всем и особенно @ dmitry.

this_project_ID = $get_project_id[0]->ID;

add_filter('woocommerce_checkout_get_value', function($input, $key ) use ( $this_project_ID ) {
switch ($key) :
    case 'billing_project_id':
        return $this_project_ID; 
        break;
endswitch;

}, 10, 2);

Я использовал решение Дмитрия, и я только что избавился от:

global $this_project_ID;

Впервые я увидел использование , поэтому мне нужно еще многое узнать , Спасибо

1 Ответ

0 голосов
/ 27 января 2020

Вы можете попробовать код ниже:

this_project_ID = $get_project_id[0]->ID;

add_filter('woocommerce_checkout_get_value', function($input, $key ) use ( $this_project_ID ) {

    switch ($key) :
        case 'billing_project_id':
            return $this_project_ID; 
            break;
    endswitch;
}, 10, 2); 

Замыкания также могут наследовать переменные из родительской области. Любые такие переменные должны быть переданы языковой конструкции use. Начиная с PHP 7.1, эти переменные не должны включать суперглобальные переменные, $ this или переменные с тем же именем, что и параметр.

...