- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
您好,我正在尝试在 Laravel 5.1 中开发一个包。感谢这里的帮助,我已经设置了基础知识。
我当前的问题是如何在开发包时加载包的依赖项。
在包 composer.json
中,我添加了依赖项,现在将它们安装在我的包开发文件夹内的 vendor 文件夹中。这不是框架根供应商文件夹。
这是我对包 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 中不再具有此功能
感谢任何帮助和最佳实践
最佳答案
Because they are not part of the main autoload process
我认为您误解了 Composer 依赖项的管理方式。当您在主 compose.json 文件中列出依赖项时,composer 会将其添加到主自动加载进程以及它们的所有依赖项,以及它们的依赖项的依赖项,等等递归。
您不必担心依赖项的存储位置或 Composer 将如何加载它们。 Composer 会自动将它们添加到自动加载文件中,您所要做的就是确保您需要 Composer 自动加载文件。一旦你需要 composer autoload 文件,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);
请注意,我需要 composer 自动加载文件,这似乎是您的问题。当您使用 Laravel 时,它会为您添加该文件。
关于php - Laravel 5.1 Package Development - 在开发中加载包依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30996765/
我正在开发一个需要能够平均三个数字的 Facebook 应用程序。但是,它总是返回 0 作为答案。这是我的代码: $y = 100; $n = 250; $m = 300; $number = ($y
我只是无法弄清楚这一点,也找不到任何对我来说有意义的类似问题。我的问题:我从数据库中提取记录,并在我的网页上以每个面板 12 条的倍数显示它们。因此,我需要知道有多少个面板可以使用 JavaScrip
我是一名优秀的程序员,十分优秀!