Laravel 如何引入多类 PHP 文件?

我知道可以用composer.json的autoload功能,如果是函数集或者文件名和类名一致,加上namespace就可以导入一个类,但是如果一个文件有多个类或者类的名称和文件名称不一致的话就会出错,说在控制器里找不到,想导入到控制器该怎么做呢?
include, require等这时候都不好用了。

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案

首先, includerequire 是可以用的,比如下面这样:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

require __DIR__.'/../../Classes/1.php';

class TestController extends Controller
{
    public function index() {
        $class1 = new \Class1();
        $class2 = new \Class2();
        return $class1->say();
    }
}

1.php 放在项目下的 app/Classes 目录下

<?php
/**
 * Created by PhpStorm.
 * User: zed
 * Date: 18-6-13
 * Time: 上午10:35
 */
Class Class1 {
    public function say() {
        return 'i am class1';
    }
}
Class Class2 {
    public function say() {
        return 'i am class2';
    }
}

其次, Composer 也能用:

"autoload": {
        "files": [
            "app/Classes/1.php"
        ],
        "classmap": [
            "database/seeds",
            "database/factories"
        ],
        "psr-4": {
            "App\\": "app/"
        }
    },

改完之后记得

composer dumpautoload
5年前 评论
讨论数量: 2

首先, includerequire 是可以用的,比如下面这样:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

require __DIR__.'/../../Classes/1.php';

class TestController extends Controller
{
    public function index() {
        $class1 = new \Class1();
        $class2 = new \Class2();
        return $class1->say();
    }
}

1.php 放在项目下的 app/Classes 目录下

<?php
/**
 * Created by PhpStorm.
 * User: zed
 * Date: 18-6-13
 * Time: 上午10:35
 */
Class Class1 {
    public function say() {
        return 'i am class1';
    }
}
Class Class2 {
    public function say() {
        return 'i am class2';
    }
}

其次, Composer 也能用:

"autoload": {
        "files": [
            "app/Classes/1.php"
        ],
        "classmap": [
            "database/seeds",
            "database/factories"
        ],
        "psr-4": {
            "App\\": "app/"
        }
    },

改完之后记得

composer dumpautoload
5年前 评论

感谢大神,我就是差在这个反斜杠上,怎么也引入不了。

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!