Laravel 使用外部类

Posted

技术标签:

【中文标题】Laravel 使用外部类【英文标题】:Laravel use external class 【发布时间】:2017-05-09 07:19:29 【问题描述】:

我是 laravel 的新手,需要一些帮助。 实际上我使用 5.3 laravel 版本。 我需要在 laravel 中使用外部公司框架(将其称为 F 表示简洁)。 这个框架有点像流程管理器。实际上,为了将它与 laravel 集成,我将它放在 laravel/public 文件夹中,这样我就可以在同一个域中使用 laravel 和 F 的页面。在 laravel 中,我需要访问一些 F 功能,这些功能都收集在 FFramework\Facade\FInterface 类中; 然后我想从 laravel 控制器 FController 访问这个类。 但是当我运行代码时,我得到了 Class Not Found Exception。

这是文件夹结构:

laravel 应用程序 http 控制器 FController.php 公开 CSS js index.php f框架 门面 FInterface.php index.php

这是代码示例:

FController.php

<?php
  namespace App\Http\Controllers;

  use FFramework\facade\FInterface;

  class FController extends Controller 

      public function getSimpleDAta() 
          $f = new FInterface();
          return $f->getSimpleData();
    
  

FInterface.php

<?php
  namespace FFramework\facade;

  use some\internal\function;

  class FInterface 

      public function getSimpleDAta() 
          $simpleData = ...omg so much computation :) ...
          return $simpleData;
    
  

我得到的例外:

找不到类“FFramework\facade\FInterface”

其他信息

我使用标准 LAMP 配置 PHP 版本是最新的 5.6 稳定版

问题

如何使用 Laravel 控制器中的 FInterface 将 FFramework 留在公共文件夹中?

【问题讨论】:

Laravel 使用 composer 的自动加载器,将命名空间和路径添加到 composer.json 中的自动加载部分。 【参考方案1】:

您需要更新composer.json 文件的自动加载部分,以告知您的项目在FFramework 命名空间中的何处查找文件。

"autoload": 
    "classmap": [
        "database"
    ],
    "psr-4": 
        "App\\": "app/"
        "FFramework\\": "public/fframework"
    
,

【讨论】:

以上是关于Laravel 使用外部类的主要内容,如果未能解决你的问题,请参考以下文章

减少对外部 API 的身份验证调用(Laravel 5.6)

java 内部类和外部类的关系

java内部类如何被外部引用

这个匿名内部类为何不使用final也可以访问外部成员?

内部类

java静态内部类