【问题标题】:How to add Libraries folder in laravel 5?如何在 laravel 5 中添加库文件夹?
【发布时间】:2021-03-29 12:07:55
【问题描述】:

我正在尝试在 laravel 5.0 中添加库文件夹。我尝试遵循这些步骤link 但我得到一个错误。

Class 'Libraries\Myclass' not found

这是我的 composer.json

{
"autoload": {
        "classmap": [
            "database"            
        ],
        "psr-4": {
            "App\\": "app/"
        }
    },
    "autoload-dev": {
        "classmap": [
            "tests/TestCase.php",
            "app/Libraries"
        ]
    },
    "scripts": {
        "post-root-package-install": [
            "php -r \"copy('.env.example', '.env');\""
        ],
        "post-create-project-cmd": [
            "php artisan key:generate"
        ],
        "post-install-cmd": [
            "Illuminate\\Foundation\\ComposerScripts::postInstall",
            "php artisan optimize"
        ],
        "post-update-cmd": [
            "Illuminate\\Foundation\\ComposerScripts::postUpdate",
            "php artisan optimize"
        ]
    },
    "config": {
        "preferred-install": "dist"
    }
}

请参阅 autoload-dev。我添加我的库 (app/Libraries) 文件夹,然后运行此命令 composer dump-autoload 这是我在 Libraries/Myclass.php 中的班级代码

namespace Libraries\Myclass;

class Myclass{
    public function hello(){
        echo "hello world";
    }
}

我不知道我的代码是否足够好。如果我错了,请纠正我。我正在尝试在 laravel 5 中探索更多内容。

【问题讨论】:

    标签: php laravel-5


    【解决方案1】:
        {
         "autoload": {
            "classmap": [
                "database"            
            ],
            "files": [
                "app/Libraries"
            ],
            "psr-4": {
                "App\\": "app/"
            }
        },
        "autoload-dev": {
            "classmap": [
                "tests/TestCase.php",
            ]
        },
        "scripts": {
            "post-root-package-install": [
                "php -r \"copy('.env.example', '.env');\""
            ],
            "post-create-project-cmd": [
                "php artisan key:generate"
            ],
            "post-install-cmd": [
                "Illuminate\\Foundation\\ComposerScripts::postInstall",
                "php artisan optimize"
            ],
            "post-update-cmd": [
                "Illuminate\\Foundation\\ComposerScripts::postUpdate",
                "php artisan optimize"
            ]
        },
        "config": {
            "preferred-install": "dist"
        }
    }
    

    运行composer dump-autoload 命令并使用您的库。

    【讨论】:

      【解决方案2】:

      我遇到了类似的情况,并想出了一个干净的方法(在我看来)。我正在使用 Laravel 5.4。我的班级被命名为“Ldap”,我就是这样做的。

      1. 在app下创建了一个Libraries目录并添加了我的类文件:

        app/Libraries/Ldap.php(具有命名空间 Libraries\Ldap)

      2. 在 composer.json 文件中,

        "autoload": {
            ...
        
            "classmap": [
                "database",
                "app/Libraries" <------------ Added libraries directory
            ], 
        
            ...
         }
        
      3. 进入终端并运行了这个命令:composer dump-autoload

      4. 打开 aap/config/app.php 文件并在“别名”下添加以下代码:

        'aliases' => [
            ...
        
            'Ldap' => \Libraries\Ldap\Ldap::class <--- Added this line
        ],
        
      5. 现在在我的控制器中,我只是实例化我的类:

        // Ldap class object
        $ldapObj = new Ldap();
        

      它就像一个魅力! 祝你快乐!

      【讨论】:

        【解决方案3】:

        对于 laravel 8,以下方法有效:

        composer.json:

        "autoload": {
                "psr-4": {
                    "App\\": "app/",
                    "Database\\Factories\\": "database/factories/",
                    "Database\\Seeders\\": "database/seeders/",
                    "Lib\\": "lib/" <------- Add this
                }
            },
        

        然后运行composer dump-autoload

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-03-02
          • 2016-12-02
          • 2016-04-06
          • 2015-09-05
          • 2023-03-18
          • 2015-09-26
          • 2015-06-23
          相关资源
          最近更新 更多