Can non-anonymous functions in PHP using 'use' keyword?

微笑、不失礼 提交于 2019-12-10 16:36:22

问题


Can non-anonymous functions in PHP using 'use' keyword? Or it is available for anonymous functions only.

Can I write a php file like this

// L.php
// assume $_texts is in this context..

$_language = null;

function L_init($language) use (&$_language)
{
  $_language = $language;
}

function L($key) use ($_texts, $_language)
{
  $_texts[$_language][$key];
}

So, another file can use it like this

// client.php
require_once 'L.php';

L_init('en');
echo L('GREETING'); // Will output localize string of key 'GREETING'

回答1:


No you can't.

The code generate syntax errors.




回答2:


It is available for anonymous functions, but you can assign it to a variable:

$some_external_var = "World!";
$function = function() use($some_external_var){
    echo "Hello ".$some_external_var;
};

Finally you can invoke it with:

call_user_func($function);

or just:

$function();


来源:https://stackoverflow.com/questions/26667918/can-non-anonymous-functions-in-php-using-use-keyword

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!