Composer php Composer/PSR-如何自动加载函数?
如何自动加载助手函数(在任何类之外)?我可以在Composer php Composer/PSR-如何自动加载函数?,composer-php,autoload,psr-0,Composer Php,Autoload,Psr 0,如何自动加载助手函数(在任何类之外)?我可以在composer.json中指定某种应该首先加载的引导文件吗?您可以通过如下方式编辑composer.json文件: "autoload": { "files": ["src/helpers.php"] } (谢谢) 在composer.json中添加自动加载信息 使用src/functions文件夹中的函数创建一个ownformations.php //推荐 // http://php.net/manual/en/control-stru
composer.json
中指定某种应该首先加载的引导文件吗?您可以通过如下方式编辑composer.json
文件:
"autoload": {
"files": ["src/helpers.php"]
}
(谢谢)
composer.json中添加自动加载信息
src/functions
文件夹中的函数创建一个ownformations.php
//推荐
// http://php.net/manual/en/control-structures.declare.php
声明(严格类型=1);
名称空间供应商\名称空间\函数\所有者函数;
函数魔术(int$number):字符串{
返回strval($number);
}
index.php
中,需要自动加载composerdeclare(严格类型=1);
需要一次目录/供应商/autoload.php';
使用函数Vendor\Namespace\Functions\OwnFunctions\magic;
回声魔法(1);
//或者,您只能使用OwnFunctions命名空间
使用供应商\名称空间\函数\所有者函数;
echo-OwnFunctions\magic(1);
这也可以通过const实现
使用常量Vendor\Namespace\Functions\OwnFunctions\someConst;
回声常数;
经过一些测试,我得出结论,在包含函数的文件中添加名称空间,并将composer设置为自动加载此文件,似乎不会在所有需要自动加载路径的文件中加载此函数 要进行合成,这将在任何地方自动加载您的函数: composer.json src/greetings.php src/greetings.php
请注意,在调用自动加载文件时,该文件将始终包含在内,因此最好快点,否则使用它的每个php脚本都会受到影响。这很有帮助,谢谢。建议首先检查函数是否存在:如果(!function_exists('myfunction')),如何在包中加载一个functions.php文件,其中只包含来自Git repo的函数?我有权编辑包的composer.json文件。@DonnieAshok不确定Git与此有何关系。如果这是你的要求,你不能远程加载函数。只需将
src/helpers.php
更改为path/to/functions.php
。如果这还不清楚,你可能想问一个新问题。对于那些已经设置了PSR-4自动加载模式并希望以与类相同的方式自动加载函数的人来说,这不是一个合适的答案。这不会自动加载任何东西-函数不能在PHP中自动加载,自动加载只适用于类。你是对的。仅当手动包含文件或在同一文件中包含多个名称空间时,此操作才有效。这是因为您的条件不正确-您应该对函数\u exists()
:如果(!function\u exists('您\问候语'))
。这与自动加载无关。如果(!function_存在(\uuu NAMESPACE_u.'.\hellives')),您也可以使用)
来避免重复FQDN太多次,这样在开发过程中,如果需要,可以更容易地移动命名空间。+1作为工作示例,另外,如果您不想在每次函数调用之前指定名称空间,只需添加use function you\greetings代码>到文件的顶部
{
"autoload": {
"psr-4": {
"Vendor\\Namespace\\": "src/"
}
}
}
"autoload": {
"files": [
"src/greetings.php"
]
}
<?php
if( ! function_exists('greetings') ) {
function greetings(string $firstname): string {
return "Howdy $firstname!";
}
}
?>
"autoload": {
"files": [
"src/greetings.php"
]
}
<?php
namespace You;
if( ! function_exists('greetings') ) {
function greetings(string $firstname): string {
return "Howdy $firstname!";
}
}
?>
<?php
require( __DIR__ . '/../vendor/autoload.php' );
use function You\greetings;
greetings('Mark'); // "Howdy Mark!"
?>