如何在 Laravel 项目中包含外部文件?

3

我在本地主机上有一个公共目录,其中包含一些类,我希望能够在当前的laravel项目中使用这些类。

那么我该如何在laravel中引用这些外部类或文件呢?

我尝试着将这些文件添加到我的composer.json文件中,

"autoload": {
        "classmap": [
            "database",
            "../public_classes/priceClass.php"
        ],
        "psr-4": {
            "App\\": "app/"
        },
        "files": [
            "../public_classes/priceClass.php"
        ]
    },

执行composer dump-autoload命令后,当我尝试调用该函数时,它无法正常运行。


你想要包含哪种类型的文件?带有命名空间的类还是简单函数? - Andrew
我本想使用面向对象的类,但最终只写了简单的函数。 - A Mendoza
3个回答

3
如果您正在使用PSR-4,则无需在composer.json中添加任何内容。例如,您可以在\app\MyClasses\MyClass.php中创建PHP文件,并在自定义类中使用此命名空间:namespace App\MyClasses
Laravel会为您自动加载此类。

我正在尝试包含的文件不属于 Laravel 项目所在的同一目录。这些文件位于单独的目录中,它们是我的存储库类。 - A Mendoza

3

我也想在我的Laravel项目中包含一些类,所以我只需将文件复制到一个新目录(app / Libraries)中,并为所有类分配包名称,并遵循PSR-4自动加载标准,并且我已在我的composer.json中添加了以下代码。

     ...
        "autoload": {
            "classmap": [
                "app/Libraries",
            ],
...

希望这能解决你的问题...

很高兴能帮助!!!


0
我最后做的是在我的composer.json文件中添加了文件路径,然后运行composer dump-autoload命令。

composer.json:

"autoload": {
        "classmap": [
            "database",
            "../public_classes/priceClass.php"
        ],
        "psr-4": {
            "App\\": "app/"
        },
        "files": [
            "../public_classes/priceClass.php"
        ]
    },

然后,我想要添加的文件,我将其编辑为简单函数而不是oop函数。

priceClass.php:

<?php

function getPrices(){
/* 
*
*
*Statements here 
*
*/
}

?>

然后在我的Laravel控制器中简单地调用它

$prices = getPrices();

我这样做是因为当我尝试使用类似以下的代码时:
class Prices(){

    public function getPrices(){ 
         ....
    }

}

然后在我的Laravel控制器中调用它:

$priceClass = new Prices();
$prices = $priceClass->getPrices();

我最终遇到了一个错误,类似于:找不到 Prices 类。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接