背景
我知道我想要做的事听起来有点不对,但我确实有我的理由。 基本上我有一个中央核心应用程序,它是一个默认的laravel应用程序,带有一些调整和样板代码,然后我开发了一系列可用于通过作曲家扩展应用程序的软件包。如果没有核心框架,这些软件包就无法运行,因此完全可以依赖它。
我想做什么
我想要做的是在我的核心应用程序中有一个BaseController,并且我的包中的各种控制器扩展了这个BaseController,以便在各种模块包中提供通用功能。
我原本希望能够将基本控制器置于app/controllers/BaseController.php
然后使用以下命令从我的包中扩展它:
class PackageController extends \BaseController{}
不幸的是,当我这样做时,它仍然在控制器的包(当前工作台)内查找,我得到错误:
包括(/var/www/l4core.dev/workbench/myvendor/mypackage/src/controllers/BaseController.php): 无法打开流:没有这样的文件或目录
谁能告诉我这里我做错了什么。我正在寻找一种解决方案,它允许我在供应商目录和工作台之间轻松移动我的包以进行开发。任何帮助非常感谢
更新
前面提到的错误消息似乎是由于我的包/vendor/composer/classloader.php
中的包含 - 我现在已经删除了供应商目录并完成了新的作曲家安装。这还没有解决问题,但它至少改变了它,因为我现在得到以下错误信息:
未找到类'BaseController'
我的包composer.json
{
"name": "modules/sesame",
"description": "",
"authors": [
{
"name": "any",
"email": ""
}
],
"require": {
"php": ">=5.4.0",
"illuminate/support": "4.0.x",
"zizaco/confide": "dev-master",
"zizaco/entrust": "dev-master",
"conarwelsh/mustache-l4": "dev-master"
},
"autoload": {
"classmap": [
"src/controllers",
"src/models",
"src/migrations",
"src/seeds"
],
"psr-0": {
"Modules\\Sesame": "src/"
}
},
"minimum-stability": "dev"
}
答案 0 :(得分:2)
务必执行:
php artisan dump-autoload
并确认您的班级BaseController
位于/vendor/composer/autoload_classmap.php
。
或者像OP所说的那样,删除vendor
目录并再次运行composer install
有时可以解决问题。