使用来自不同自动加载器的类

时间:2018-02-09 16:24:27

标签: php laravel autoloader xenforo

我正在尝试将Laravel应用程序与Xenforo集成。最简单的方法似乎是同步用户的创建,登录,注销事件。

因此,例如,每当用户从Xenforo注销时,我都想触发Laravel的Auth::logout

Xenforo安装在Laravels public/forum文件夹中。

Xenforo的退出操作在public/forum/src/XF/Pub/Controller/Logout.php执行:

namespace XF\Pub\Controller;

use XF\Mvc\ParameterBag;
use XF\Mvc\Reply\AbstractReply;
use Illuminate\Support\Facades\Auth; // ===========> WONT WORK

class Logout extends AbstractController
{
    public function actionIndex()
    {
        $this->assertValidCsrfToken($this->filter('t', 'str'));

        /** @var \XF\ControllerPlugin\Login $loginPlugin */
        $loginPlugin = $this->plugin('XF:Login');
        $loginPlugin->logoutVisitor();
        Auth::logout(); // =========================> WONT WORK

        return $this->redirect($this->buildLink('index'));
    }

    (...)
}

我想因为它的自动加载并不知道这个类,因此Xenforo不知道这个类。

  1. 有没有办法让Xenforo拥有自己的自动加载器,还可以考虑使用Laravels自动加载器?

  2. 如果不能如何将此类添加到Xenforos自动加载器中?

  3. 提前致谢。

2 个答案:

答案 0 :(得分:0)

即使你可以,它也可能会很混乱并且可能会引入你不会考虑的错误。最干净的方法是在Laravel中设置一个API端点,您可以在Xenforo注销控制器中发出请求,或者控制器调用注意给定用户的工匠命令。这样,您就可以防止必须从另一个框架中引导框架,并保持两者完全分离。

答案 1 :(得分:-1)

您可以查看有关如何在其中加入其他自动加载器的official composer docs

修改

我要改写我的回答;您不应该尝试将Laravel加载到Xenforo中,因为可能存在第三方库版本问题,重复的帮助方法(如果Xenforo有任何问题),可能会出现各种其他问题,最好将Laravel用作endpoint并且让REST调用登录,注销等。正是@samrap提到的。

我的问题是你为什么要使用Xenforo,是否必须使用它来实现你想做的任何事情?