- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建一个包含其他库的 PHP 库,我敢打赌我遗漏了一些基本的东西。
使用 AWS PHP SDK作为指南,我想创建一个库,在使用 Composer 安装后,它需要其他库,但是类的整个范围(包括当前库和所需库)都可以通过使用 require 来获得'vendor/autoload.php;'
.
设置它的基本要求是什么?这是配置 composer.json
的问题,以特定方式命名空间,还是两者兼而有之?
最佳答案
您所描述的正是 Composer 的主要目的 - 定义可能需要并实现其他包的代码包。
使用 AWS 开发工具包作为指南,如果您查看提供所有 Composer 配置信息的 composer.json 文件,您将看到两个 require block ,一个标记为 require
,另一个标记为require-dev
:
"require": {
"php": ">=5.5",
"guzzlehttp/guzzle": "^5.3.1|^6.2.1",
"guzzlehttp/psr7": "^1.4.1",
"guzzlehttp/promises": "~1.0",
"mtdowling/jmespath.php": "~2.2"
},
"require-dev": {
"ext-openssl": "*",
"ext-pcre": "*",
"ext-spl": "*",
"ext-json": "*",
"ext-dom": "*",
"ext-simplexml": "*",
"phpunit/phpunit": "^4.8.35|^5.4.0",
"behat/behat": "~3.0",
"doctrine/cache": "~1.4",
"aws/aws-php-sns-message-validator": "~1.0",
"nette/neon": "^2.3",
"andrewsville/php-token-reflection": "^1.4",
"psr/cache": "^1.0"
},
这就是您定义库所依赖的其他包/库的方式。 require
部分列出了安装库时必须安装的所有其他库。 require-dev
部分列出了仅当您在开发环境中工作时可能需要的库,而在您的生产环境中则不需要。
当您指定其他需要的库时,Composer 将安装您的库,然后出去并要求您的库需要的库(然后是这些库需要的库,依此类推)。
还包含在要包含的库中,您会注意到版本号也包含在内,以确保兼容性。
我发现添加新依赖项的最简单方法是在命令行上,使用 composer require
命令,记录在此处:https://getcomposer.org/doc/03-cli.md#require .该命令可帮助您在您不完全了解所需的软件包时搜索它,并可以自动为您解析最新版本(如果需要/想要,您可以覆盖)。
如果您希望只需要开发依赖项,请在运行命令时添加 --dev
标志。
使用此命令,Composer 将自动更新您的 composer.json 文件,将依赖项拉到本地机器上,并更新您的自动加载器。
除了 require_once vendor/autoload.php
之外,您永远不需要做任何事情来确保可以自动加载依赖项 - Composer 将完成设置自动加载器的所有工作,因此您不必, 并在添加新的依赖项时使所有内容保持最新。
这是关于 composer.json 架构的完整文档:https://getcomposer.org/doc/04-schema.md .您将希望在项目的根目录中有一个 composer.json 配置文件,以便您可以为您的项目(以及以后需要您的库的任何其他项目)配置 composer。如果您没有,可以使用 composer init
命令以交互方式创建一个。有关该命令的文档可在此处获得:https://getcomposer.org/doc/03-cli.md#init
这是他们的基本使用指南,以防您还没有阅读过:https://getcomposer.org/doc/01-basic-usage.md
关于php - Composer : library which requires a library,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44037930/
我看过有关 CocoaPods 的指南,建议像这样导入所需的 pod 的库 header : #import 在哪里Library是库的名称(例如 #import )。 我还看到指南建议像这样导入
我正在尝试创建一个包含其他库的 PHP 库,我敢打赌我遗漏了一些基本的东西。 使用 AWS PHP SDK作为指南,我想创建一个库,在使用 Composer 安装后,它需要其他库,但是类的整个范围(包
我正在为 Android 产品开发我的 gradle 版本,以使产品风格正常工作。 我有以下项目结构: at.mkw.inlocs.android - Library Project at.mkw.i
使用@testing-library/react-hooks 我过去常常通过initialProps 传递模拟存储,正如Advanced Hooks 中提到的那样文档。假设我有一个代码: import
我试图获得一个静态链接到我的程序的音频库。我用 this灵活的包。为了让它运行,我必须按照描述构建 soloud 库 here .下载后不久,我在“build”文件夹中运行了“genie --with
我刚刚安装了 zkcm library在我的 kubuntu 机器上,我在编译 C++ 代码时遇到了问题。 我已经安装了 gmp 和 mpfr 库并检查它们是否工作;代码 mpfr_t m1, m2,
我正在尝试编译我的 native 代码。这是我的 android.mk 文件 //part1-static lib LOCAL_PATH := $(call my-dir) include $(CLE
我正在开发一个带有沙丘的大型图书馆。让我们调用这个库L . 为了避免造成大困惑,沙丘项目有许多较小的库:A , B , C , ... 这些库相互依赖。 我希望用户能够 opam install L
在 unix 之上使用 C 语言工作,我正在加载和使用共享库,如下所示: ... handle = dlopen("nameOfLib"); ... libInit(); ... libGoToSta
我试图找出一种更简单的方法来为XCode中的链接器构建阶段复制/同步框架列表。我知道我可以在Xcode中复制目标,但这是用于创建新的Cocoa Touch Unit Testing Bundle目标。
例如/lib/的描述是它包含系统的共享库文件。 图书馆到底是什么?我们谈论的库文件是否类似于在 C 中导入库?库文件中包含什么以及它们的用途是什么? 它与.dll 有什么关系 最佳答案 库只是一个代码
我有这样的目录结构 . --compile_c.sh --compile_java.sh --config.sh --execute_java.sh --run.sh --src --ccode
我正在更新一些 Makefile 以从 Make 3.81 移动到 3.82。在多个地方,原作者使用了类似这样的东西来构建静态库: all: lib$(library).a($objects) 这似乎
我是 Rust 的新手,正在尝试了解 Cargo 的东西。我在他们的常见问题解答中读到关于 "why do binaries have Cargo.lock in version control, b
我正在尝试使用 Microsoft Enterprise Library 中的 DatabaseFactory 方法。 using Microsoft.Practices.EnterpriseLibr
我刚刚升级到Xcode 5.1,突然出现一个新警告: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctool
然后新的Enterprise Library 6出来了,可以是downloaded here .我已将 EnterpriseLibrary6-binaries.exe 下载并解压缩到我的 C: 驱动器
我正在尝试将 native 库与我的 Eclipse 插件捆绑在一起。当我提供库的路径时 -Djava.library.path ,它完美无缺。 但是,当我将它添加到 MANIFEST.MF 中时文件
在我的 Android Studio 项目中,我有两个子项目/模块:一个 Android 应用程序(App1)和一个 Android 库项目(LibraryProject1)。 App1取决于 Lib
我最近使用 Google 的 Closure 编译器创建了一个 JavaScript 库:https://github.com/bvaughn/task-runner 我打算让这个库供那些也需要完整闭
我是一名优秀的程序员,十分优秀!