- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我想从我的供应商文件夹中加载一个服务提供商。我实际上将这个供应商添加到我的项目中
现在在文件夹结构下
vendor/
- paypal/
- rest-api-sdk-php/
- config/
- paypal.php
- docs/
- lib/
- PayPal/
- PayPalConfigServiceProvider.php
- sample/
- test/
- composer.json
如您所见,我在供应商上添加了一些项目。我在 config
文件夹下添加了一个配置文件,即 paypal.php
在 lib 文件夹下我添加了 PayPalConfigServiceProvider.php
服务提供商的完整路径是my_project/vendor/paypal/rest-api-sdk-php/lib/PayPalConfigServiceProvider.php
现在我想添加 PayPalConfigServiceProvider,这样当我运行 composer update 或其他东西时,PayPalConfigServiceProvider 会将配置文件复制到 myproject\config
文件夹。所以我加了
'providers' => [
Illuminate\Validation\ValidationServiceProvider::class,
Illuminate\View\ViewServiceProvider::class,
Illuminate\Html\HtmlServiceProvider::class,
PayPal\PayPalServiceProvider::class,
]
在 config/app.php 的 providers 数组下。但是现在当我尝试运行 php artisan 时,我得到了这个错误
PHP Fatal error: Class 'PayPal\PayPalServiceProvider' not found in myproject/vendor/laravel/framework/src/Illuminate/Foundation/ProviderRepository.php
所以我假设这与我根目录中的 composer.json 有关,这就是它的内容
{
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"type": "project",
"require": {
"php": ">=5.5.9",
"laravel/framework": "5.1.*",
"illuminate/html": "^5.0",
"doctrine/dbal": "^2.5",
"paypal/rest-api-sdk-php": "*"
},
"require-dev": {
"fzaninotto/faker": "~1.4",
"mockery/mockery": "0.9.*",
"phpunit/phpunit": "~4.0",
"phpspec/phpspec": "~2.1"
},
"autoload": {
"classmap": [
"database"
],
"psr-4": {
"App\\": "app/"
}
},
"autoload-dev": {
"classmap": [
"tests/TestCase.php"
]
}
}
现在似乎已经包含了 paypal 我不确定我需要添加什么才能被识别。我只需要初始化我的 PayPalServiceProvider 以便运行此代码
PayPalServiceProvider.php
namespace PayPal;
use Illuminate\Support\ServiceProvider;
class PayPalServiceProvider extends ServiceProvider {
/**
* Register the service provider.
*
* @return void
*/
public function register()
{
// TODO: Implement register() method.
}
public function boot()
{
$this->mergeConfigFrom(__DIR__ . '../config/paypal.php', 'paypal');
}
}
我还检查了 paypal vendor 文件夹并检查了它的 composer.json,这是内容
{
"name": "paypal/rest-api-sdk-php",
"description": "PayPal's PHP SDK for REST APIs",
"keywords": ["paypal", "payments", "rest", "sdk"],
"type": "library",
"license": "Apache2",
"homepage": "http://paypal.github.io/PayPal-PHP-SDK/",
"authors": [
{
"name": "PayPal",
"homepage": "https://github.com/paypal/rest-api-sdk-php/contributors"
}
],
"require": {
"php": ">=5.3.0",
"ext-curl": "*",
"ext-json": "*"
},
"require-dev": {
"phpunit/phpunit": "3.7.*"
},
"autoload": {
"psr-0": {
"PayPal": "lib/"
}
}
}
我知道我总是可以在根目录的 composer.json 中添加类似这样的东西
"autoload": {
"classmap": [
"database"
],
"psr-4": {
"App\\": "app/",
"PayPal\\": "vendor/paypal/rest-api-sdk-php/lib",
}
}
这将在我运行 composer dumpautoload 时起作用。但我不想要这种方法,我看到很多库,但没有一个库做过这样的事情。有什么方法可以加载我的服务提供商,而无需在根目录的 composer.json 下的自动加载中添加条目?如果我在 vendor 文件夹的 composer.json 上添加一些东西就可以了。但是我将如何实现呢?请帮忙解决这个问题。谢谢
最佳答案
您不应该将文件添加到包文件夹中。
你可以将你的配置文件移动到config
文件夹,将你的Paypal服务提供商(我想你自己写的)移动到app/Providers
文件夹并使用该类的应用程序命名空间。
但是,如果您仍想从 lib 文件夹加载您创建的类(同样,我不建议这样做),请将您的服务提供商类放入 lib/Paypal
而不是 lib
。原因是这个类使用 PSR-0 类加载标准,你可以在 this answer on Stack Overflow 中看到关于 PSR-0 和 PSR-4 之间差异的清楚解释。 .
关于php - 如何在 Laravel 中加载自定义服务提供者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33062981/
我一直在寻找文件系统的 Java 命名和目录接口(interface) (JNDI) 服务提供商。 据我所知,Oracle 与 JDK 捆绑在一起,仅提供 RMI、DNS、LDAP 和 COS 服务提
我不熟悉单点登录的概念。我们已经有一个管理其用户的 Java Web 应用程序。现在的要求是,身份验证将由客户端的 SSO Idp(使用 SAML)提供,之后请求将被转发到我们的应用程序。由于我以前没
当我访问 laravel 时,它说 Symfony \ Component \ Debug \ Exception \ FatalErrorException 'Krucas\Notification
我(我们)正在创建一个包,作为我们 future CMS 的核心组件,当然,该包需要一些单元测试。当包注册时,它做的第一件事就是像这样设置后台/前端上下文: class FoundationServi
有没有办法在 Laravel 中仅为某些路由/URL 注册服务提供商?我想知道是否可以仅在需要的地方绑定(bind)服务,以及它是否有助于减少启动时的压力。 最佳答案 我不确定是否可以仅在特定路线上注
有没有办法在 Laravel 中仅为某些路由/URL 注册服务提供商?我想知道是否可以仅在需要的地方绑定(bind)服务,以及它是否有助于减少启动时的压力。 最佳答案 我不确定是否可以仅在特定路线上注
我正在开发一个 Laravel 5 应用程序,现在应用程序的代码应该在多个 laravel 5 应用程序中重复使用,这就是为什么我要创建一个 composer 包,然后我想在任何地方安装这个包具有相同
当使用预配置的服务提供者元数据时,在 spring security 中,扩展元数据委托(delegate)是否应该有 2 个 beans 定义?一个用于 IDP 元数据,一个用于 SP 元数据?
我知道如何绑定(bind)单个类: public function register() { $this->app->bind('search', 'Laracasts\Search\Sear
我创建了扩展 XeroServiceProvide 的自定义服务提供程序,基本上,我有多个 Xero 帐户,我想更改两个配置参数值运行时 消费者 key 和 消费者 secret .有没有快速的方法。
我有一个小程序需要调用JAXP,具体是SAXParserFactory .现在,正如您从 Javadoc 中看到的那样,这在内部使用了服务提供者机制,如文档中所述 here : 具体来说,如果它在我的
我试图找出一个涉及 Spring Security 和 SAML 的问题。我们正在尝试使用 Spring Security (spring-security-core-3.1.1.RELEASE.ja
我需要创建一个 RESTful WCF 服务,它需要使用 OAuth 2.0 对调用者进行身份验证。过去一周我一直在学习 OAuth 和它的提供者实现,这些是我发现的资源,它们接近我想要的。 (1)
我的 someModule 模块有一个服务: someModule.provider('someService', function() { this.options = {}; th
在 view composer documentation 之后我为我的基本 View 创建了一个类 ComposerServiceProvider 和一个 ViewComposer。我想为我站点的管
我收到此错误: BindingResolutionException in compiled.php line 1029: Target [App\Models\Contracts\Repositor
我正在考虑使用 Oracle 数据库作为 Web 服务提供程序并通过 PL/SQL 存储过程实现 Web 服务逻辑的选项。我以前曾编写过存储过程代码,但我不确定我应该朝哪个方向发展才能使用最新的解决方
在 AngularJS 2.0 Heroes 教程解释中指出,如果一个子组件在其 @Component Providers 列表中包含一个服务,那么 Angular 将创建该服务特定于该子组件的单独实
我正在构建一个 Web 应用程序,它将使用 DotNetOpenAuth 提供一个 api 和一个授权服务。我找到了 this example关于如何使用已经存在的服务提供者进行授权,但我想要一个关于
我正在努力在 Websphere Liberty 服务器上启用 samlWeb-2.0。我需要使用我的雇主提供的现有身份提供商来实现服务提供商部分进行身份验证。 samlWeb-2.0 功能已安装并启
我是一名优秀的程序员,十分优秀!