Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.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
Php 使用Laravel 8中的facade创建自定义包_Php_Laravel_Package_Laravel Facade - Fatal编程技术网

Php 使用Laravel 8中的facade创建自定义包

Php 使用Laravel 8中的facade创建自定义包,php,laravel,package,laravel-facade,Php,Laravel,Package,Laravel Facade,我正在尝试开发一个新的Laravel包,通过Composer本地安装 以下是我的步骤: 我使用composer create project Laravel/Laravel my application安装了一个新的Laravel应用程序 我在根目录中创建了一个包含以下内容的新目录: packages/randolf/custom-package/composer.json { “名称”:“randolf/定制包”, “说明”:“我的新自定义包”, “类型”:“库”, “许可证”:“麻省理工

我正在尝试开发一个新的Laravel包,通过Composer本地安装

以下是我的步骤:

  • 我使用
    composer create project Laravel/Laravel my application安装了一个新的Laravel应用程序

  • 我在根目录中创建了一个包含以下内容的新目录:

    packages/randolf/custom-package/composer.json

    {
    “名称”:“randolf/定制包”,
    “说明”:“我的新自定义包”,
    “类型”:“库”,
    “许可证”:“麻省理工学院”,
    “要求”:{},
    “自动加载”:{
    “psr-4”:{
    “Randolf\\CustomPackage\\”:“src/”
    }
    },
    “额外”:{
    “拉雷维尔”:{
    “提供者”:[
    “Randolf\\CustomPackage\\CustomPackageServiceProvider”
    ],
    “别名”:{
    “CustomPackage”:“Randolf\\CustomPackage\\Facades”
    }
    }
    }
    }
    
    packages/randolf/CustomPackage/src/CustomPackage.php


    调整
    composer.json
    中的别名,使其指向外观而不是名称空间:

    "CustomPackage": "Randolf\\CustomPackage\\Facades\\CustomPackageFacade"
    

    您忘记将实际外观的类名添加到命名空间中,您要在composer.json文件中添加别名。。。您在名称空间中使用了别名,而不是facade itselfNice教程!但是您正在将方法
    sayHi()
    作为静态调用,因此需要将其定义为静态:
    public function sayHi()
    public static function sayHi()
    。为什么要在提供者的
    register()
    方法中设置
    $this->app->bind
    ?不使用它似乎也很好…@DevonDahon这是一个在Laravel中被称为
    Facades
    的功能。您可以将非静态方法作为静态方法调用。首先在提供程序中用名称绑定类的新实例(
    custompackage
    ,在本例中)。然后,创建返回相同名称的Facade(
    CustomPackageFacade
    ,从而返回类的实例),最后,在
    composer.json
    中注册并别名到Facade。因此,您调用
    CustomPackage::sayHi()
    ,它与
    (新的CustomPackage())->sayHi()相同。更多信息: