使用函数不会在 PHP 中导入函数
use function doesn't import functions in PHP
无法使用 PHP.net 中描述的 use function
关键字导入函数。在本地重新创建示例将返回 PHP Fatal error: Uncaught Error: Call to undefined function
.
composer.json
{
"autoload": {
"psr-4": {
"My\": ""
}
}
}
full.php
<?php
namespace My\Full;
function functionName()
{
echo 'Hello Whosebug';
}
index.php
<?php
require 'vendor/autoload.php';
use function My\Full\functionName as func;
func();
注意:我知道我可以要求该文件,但我想知道是否可以不这样做。
use function
不包含任何文件或函数定义,它只是将完全限定的函数名称作为别名,这意味着当您调用该函数时,您不需要指定命名空间。
在您的示例中,您使用的是 composer,它非常适合自动包含文件,但是 https://www.php-fig.org/psr/psr-4/ PSR-4 是
a specification for autoloading classes from file
paths
它不会自动加载不符合此规范的函数或文件。
但是您可以使用 composer 自动包含此类情况下的文件。您需要更新 composer.json 然后 运行 composer dumpautoload
composer.json
{
"autoload": {
"files": ["full.php"]
}
}
你的其余部分可以保持不变,它应该可以工作。
无法使用 PHP.net 中描述的 use function
关键字导入函数。在本地重新创建示例将返回 PHP Fatal error: Uncaught Error: Call to undefined function
.
composer.json
{
"autoload": {
"psr-4": {
"My\": ""
}
}
}
full.php
<?php
namespace My\Full;
function functionName()
{
echo 'Hello Whosebug';
}
index.php
<?php
require 'vendor/autoload.php';
use function My\Full\functionName as func;
func();
注意:我知道我可以要求该文件,但我想知道是否可以不这样做。
use function
不包含任何文件或函数定义,它只是将完全限定的函数名称作为别名,这意味着当您调用该函数时,您不需要指定命名空间。
在您的示例中,您使用的是 composer,它非常适合自动包含文件,但是 https://www.php-fig.org/psr/psr-4/ PSR-4 是
a specification for autoloading classes from file paths
它不会自动加载不符合此规范的函数或文件。
但是您可以使用 composer 自动包含此类情况下的文件。您需要更新 composer.json 然后 运行 composer dumpautoload
composer.json
{
"autoload": {
"files": ["full.php"]
}
}
你的其余部分可以保持不变,它应该可以工作。