Php Laravel 4-从软件包扩展应用程序控制器
背景 我知道我想做的事情听起来有点错误,但我有我的理由。 基本上,我有一个中央核心应用程序,这是一个默认的laravel应用程序,带有一些调整和样板代码,然后我开发了一系列包,可以通过composer来扩展应用程序。这些包在没有核心框架的情况下无法正常运行,因此完全可以期待对它的依赖 我想做什么 我想做的是在我的核心应用程序中有一个BaseController,并让我包中的各种控制器扩展此BaseController,以在各种模块包中提供通用功能 我希望能够将基本控制器放入Php Laravel 4-从软件包扩展应用程序控制器,php,namespaces,laravel,laravel-4,Php,Namespaces,Laravel,Laravel 4,背景 我知道我想做的事情听起来有点错误,但我有我的理由。 基本上,我有一个中央核心应用程序,这是一个默认的laravel应用程序,带有一些调整和样板代码,然后我开发了一系列包,可以通过composer来扩展应用程序。这些包在没有核心框架的情况下无法正常运行,因此完全可以期待对它的依赖 我想做什么 我想做的是在我的核心应用程序中有一个BaseController,并让我包中的各种控制器扩展此BaseController,以在各种模块包中提供通用功能 我希望能够将基本控制器放入app/control
app/controllers/BaseController.php
然后使用以下方法从我的软件包中扩展它:
class PackageController extends \BaseController{}
不幸的是,当我这样做时,它仍然在包(当前工作台)中查找控制器,我得到错误:
包括(/var/www/l4core.dev/workbench/myvendor/mypackage/src/controllers/BaseController.php):
无法打开流:没有这样的文件或目录
谁能告诉我我做错了什么吗。我正在寻找一种解决方案,它允许我在供应商目录和工作台之间轻松地移动包进行开发。非常感谢您的帮助
更新
前面提到的错误消息似乎是由于我的软件包中包含了/vendor/composer/classloader.php
——我现在删除了vendor目录并重新安装了composer。这并没有解决问题,但至少改变了问题,因为我现在收到以下错误消息:
找不到类“BaseController”
My Packages composer.json
确保执行以下操作:
php artisan dump-autoload
并验证您的类BaseController
是否位于/vendor/composer/autoload_classmap.php
中
或者像OP所说的那样,删除
供应商
目录并再次运行composer安装
有时可以解决问题。出现“include”错误非常奇怪,通常是“找不到类”。你能给我们一个你的包composer.json文件的片段吗?@FR6谢谢你的关注-我为包添加了composer.json。你说,你把BaseController
放在app
directory=>app/BaseController.php
中。我不确定仅从app
目录自动加载是否有效,请尝试将控制器放入app/controllers
或自动加载中包含的任何其他文件夹。抱歉,不是,这是一个输入错误,控制器位于app/controllers
我已经更新了我的问题,因为在新的composer安装后,我现在有一条标准的class not found消息
php artisan dump-autoload