Laravel 5.1 包开发 - 在开发中加载包依赖项

2024-02-11

你好,我正在尝试在 Laravel 5.1 中开发一个包。感谢这里的帮助,我已经设置了基础知识。

我当前的问题是如何在开发包时加载包的依赖项。

在包裹里composer.json我添加了依赖项,并将它们安装在我的包开发文件夹中的供应商文件夹中。这不是框架根供应商文件夹。

这是我的包的 require 部分composer.json:

"require": {
"illuminate/support": "~5.1",
"php" : ">=5.3.0",
"google/apiclient": "dev-master"
},

因为它们不是主自动加载过程的一部分,确保从开发文件夹中正确加载包的依赖项的最佳方法是什么?如何包含自动加载?我担心如果我将它们引用到它们当前的位置/命名空间,那么稍后在另一个应用程序中作为包安装时它会中断。

在我的代码中我有以下内容:

$client = new \Google_Client($config);

这给出了错误:

Class 'Google_Client' not found

我可以通过将此依赖项添加到主composer.json来解决这个问题,但我认为这不是保持包开发独立的正确方法(如果这有意义的话)

当我在 L4.2 中开发时,有一个负责加载的工作台,当然 L5.1 中不再有此功能

感谢任何帮助和最佳实践


因为它们不是主要自动加载过程的一部分

我认为您误解了作曲家依赖关系的管理方式。当您在主 compose.json 文件中列出依赖项时,Composer 会将其添加到主自动加载进程以及它们的所有依赖项以及它们的依赖项的依赖项,等等。

您不必担心依赖项存储在哪里或 Composer 将如何加载它们。 Composer 会自动将它们添加到自动加载文件中,并且您所要做的就是确保您需要作曲家自动加载文件。一旦您需要 Composer 自动加载文件,Composer 加载的所有类和函数都将可用。如果您需要 Composer 自动加载文件,那么要使用任何已安装包中的类,您所要做的就是确保使用正确的命名空间来寻址它们。 Composer 足够聪明,知道所有类的存储位置以及如何加载它们(这就是 psr-0、psr-4、... 的用途)。

因此,如果您正在开发一个 Composer 包,我们将其称为“A”,并将包“C”列为包“A”的依赖项之一,Composer 会将其添加到自动加载文件中。如果您使用另一个包,比如说 Laravel,它依赖于您的包“A”,那么包“C”也将在 Laravel 中可用,因为它是“A”的依赖项。

即:如果这是您的composer.json 文件

{
    "name": "foo/bar",
    "require": {
        "google/apiclient": "1.0.*"
    }
}

这段代码将起作用

require_once __DIR__ . '/vendor/autoload.php';
$client = new Google_Client();
$youtube = new Google_Service_YouTube($client);

注意我需要作曲家自动加载文件,这似乎是您的问题。当你使用 Laravel 时,它会为你添加该文件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Laravel 5.1 包开发 - 在开发中加载包依赖项 的相关文章

  • PHP-MySQLi 连接随机失败并显示“无法分配请求的地址”

    大约两周以来 我一直在处理 LAMP 堆栈中最奇怪的问题之一 长话短说 与 MySQL 服务器的随机连接失败并显示错误消息 Warning mysqli real connect HY000 2002 Cannot assign reque
  • 转义用户数据,无需魔法引号

    我正在研究如何在来自外部世界的数据被用于应用程序控制 存储 逻辑等之前正确地对其进行转义 显然 随着 magic quote 指令在 php 5 3 0 中很快被弃用 并在 php6 中被删除 对于任何想要升级并进入新语言功能 同时维护遗留
  • use 语句顺序会影响 PHP 中的功能吗?

    我使用 PHP 的命名空间已经有一段时间了 我认为它对我的编程来说是一个很好的补充 今天早上我想知道一些关于use陈述 我想知道顺序是否use影响我的 PHP 代码的功能 根据 PHP net 使用别名引用外部完全限定名称或导入的能力是命名
  • 如何在没有 session_destroy 的情况下销毁 Zend_Session_Namespace

    我使用以下方法在临时会话中存储一些值 job new Zend Session Namespace application 我如何只销毁会话应用无需清除所有会话 要从会话中删除值 请对对象属性使用 PHP 的 unset 函数 假设 job
  • Memcache 不会刷新或清除内存

    我一直在尝试清除我的内存缓存 因为我注意到使用时存储占用了近 30 的服务器内存ps aux 所以我运行了以下 php 代码 memcache new Memcache memcache gt connect localhost 11211
  • 计算 PHP 字符串中特定字符的所有出现次数的最有效方法是什么?

    计算 PHP 字符串中特定字符的所有出现次数的最有效方法是什么 用这个 echo substr count abca a will echo 2
  • 使用第三方库记录来自 PHP 应用程序的所有 cURL 请求

    好吧 我的 PHP Yii2 应用程序遇到了困难 我需要记录来自应用程序的每个传入和传出请求 传入的请求可以轻松地记录在 PHP 本身中 在引导阶段添加一些处理程序 这很容易 但真正的问题是我正在使用许多第三方库 即 Amazon MWS
  • 在 mysqli 准备好的语句程序风格中获取最后插入的 id 的正确方法是什么?

    我正在使用 mysqli 准备好的语句在表中插入记录 如下所示 link mysqli connect localhost my user my password world check connection if link printf
  • localhost/live - 通过 HTTP_HOST 检测

    假设我在本地开发并在实时服务器上调试小东西 在我的代码中添加这样的内容是个好主意吗 is local strpos SERVER HTTP HOST localhost false define DEBUG is local 然后在设置内容
  • 为什么 asort 适用于多维数组?

    抱歉 如果这是一个非常基本的问题 我无意中发现asort http php net manual en function asort php似乎适用于多维数组 示例 PHP animals array 1 gt array name gt
  • 当路由不存在时重定向 laravel 4

    我正在使用 laravel 4 当我的项目处于生产模式时 我得到 抱歉 找不到您要查找的页面 当我到达一条不存在的路线时 当我 grep 我的代码时 它在两个地方找到 vendor symfony debug Symfony Compone
  • Lumen:无法打开流:.../vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:107 中的权限被拒绝

    My OS is ubuntu 16 04 and I am running Lumen 5 5 When I try to run the app in the browser I get an error 500 我在 var log
  • 自定义 WordPress 画廊 html 布局

    当使用默认媒体上传器在 WordPress 中创建图像库时 WordPress 将图像包装在一堆 HTML 标记中 如何在生成之前覆盖它 以便我可以输出所需的标记并更改创建图库布局的方式 目前 WordPress 生成的代码如下 div d
  • 将客户分配到 magento 的多个客户组

    您好 我想将多个组分配给特定客户 例如 Rajat 客户 属于 批发 零售商 电力 实际上我在上面看到了同样的话题每个客户有多个客户组 https stackoverflow com questions 6153011 multiple c
  • 使用 Imagick 动态图像创建/Apache 标头

    在将现有的稳定网站转移到新服务器时 我遇到了一些使用 Imagick 动态创建图像的代码的间歇性问题 该代码解析 GET 查询 例如 example com image php ipid 750123 r 0 w 750 h 1000 然后
  • 2 使用我的代码在数组中查询

    我使用滑块来显示我的 WordPress 精选文章 它选择一个自定义类别并返回一定数量的帖子 如何将显示的第一篇帖子设为自定义帖子 我可以直接在滑块代码中添加特定帖子的 ID吗使该帖子首先出现 然后是原始查询返回的其他内容 例如 在页面上
  • PHP-如何根据条件配对数组中的项目

    如何将数组中的项目配对 假设我有一个数组Fighters 我想根据他们的情况将他们配对Weights 体重最接近的拳手应作为配对最佳匹配 但如果他们是在同一个团队中 他们不应该配对 团队 1 战斗机A体重为60 战斗机B体重为65 2队 战
  • 使用 Xpath 进行部分匹配

    我正在尝试创建一个搜索功能 允许使用 Xpath 按歌曲标题或流派进行部分匹配 这是我的 XML 文件
  • WordPress - 类别和子类别的嵌套列表

    我正在尝试显示带有嵌套子类别的 WordPress 类别列表 到目前为止 我只能获取父类别列表或不包括父类别的子类别列表 但我无法将两者连接在一起 这是我想要创建的结果 Parent Category 子类别 子类别 Parent Cate
  • Google Drive 服务帐户上传的位置

    我正在尝试使用服务帐户将文件上传到我的 Google 云端硬盘 当我部署此代码时 我不希望用户给予授权 我希望他们上传到我的帐户 我通过 PHP 使用它 下面是我到目前为止的情况 这段代码是基于官方文档给出的例子 当我运行 php 脚本时

随机推荐