Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Composer php Composer/PSR-如何自动加载函数?_Composer Php_Autoload_Psr 0 - Fatal编程技术网

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
    中,需要自动加载composer
  • declare(严格类型=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!"
    ?>