Php 在App\Libraries Laravel中使用配置文件
我在App\Libraries中有一个非laravel库,那里有file providers.phpPhp 在App\Libraries Laravel中使用配置文件,php,laravel,config,Php,Laravel,Config,我在App\Libraries中有一个非laravel库,那里有file providers.php <?php return [ 'slsp'=> [ 'SLSP_SPOROPAY_PU_PREDCISLO'=> '000000', 'SLSP_SPOROPAY_PU_CISLO'=> '0013662162', 'SLSP_SPOROPAY_PU_KBANKY'=> '0900',
<?php
return [
'slsp'=> [
'SLSP_SPOROPAY_PU_PREDCISLO'=> '000000',
'SLSP_SPOROPAY_PU_CISLO'=> '0013662162',
'SLSP_SPOROPAY_PU_KBANKY'=> '0900',
'SLSP_SPOROPAY_SHAREDSECRET'=> 'Z3qY08EpvLlAAoMZdnyUdQ==',
'SLSP_SPOROPAY_REDIRECTURLBASE'=> 'http://epaymentsimulator.monogram.sk/SLSP_SporoPay.aspx',
],
'paypal'=>[
'PAYPAL_USERNAME'=>'xxx',
'PAYPAL_PASSWORD'=>'xxx',
'PAYPAL_SIGNATURE'=>'xxxx',
'PAYPAL_CONNECTIONTIMEOUT'=>'3333',
'PAYPAL_RETRY'=>'true',
'PAYPAL_OGENABLED'=>'true',
'PAYPAL_FILENAME'=>'foo/bar',
'PAYPAL_LOGLEVEL'=>'5',
]
];
当我想使用它时,我必须做什么
谢谢首先,文件位于config文件夹之外,因此无法使用config facade进行设置或获取。若要继续使用提供程序文件,请将其移动到config目录,一切都将对您有效。更好的方法是创建一个laravel提供程序,并在应用程序提供程序中注册该提供程序 例如: 就你而言
php artisan make:provider EPaymentProvider
它将在providers
目录中创建一个provider文件EPaymentProvider.php
现在像这样修改库/EPayment.php
文件
<?php
class EPayment {
private static $_instance = 'null';
public $credentials = [
'PAYPAL_USERNAME'=>'xxx',
'PAYPAL_PASSWORD'=>'xxx',
'PAYPAL_SIGNATURE'=>'xxxx',
'PAYPAL_CONNECTIONTIMEOUT'=>'3333',
'PAYPAL_RETRY'=>'true',
'PAYPAL_OGENABLED'=>'true',
'PAYPAL_FILENAME'=>'foo/bar',
'PAYPAL_LOGLEVEL'=>'5',
];
/**
* @param array $array
*/
public function setPayPalCredential(array $array){
$this->credentials = $array;
}
/**
* @return EPayment|string
*/
public static function PayPal(){
if(self::$_instance === 'null')
self::$_instance = new self;
return self::$_instance;
}
/**
* @param $key
* @return mixed
*/
public function getPayPalCredential($key){
return $this->credentials[$key];
}
}
现在在config/app.php
Provider数组中添加EPaymentProvider
现在您可以使用Epayment::PayPal()->setPayPalCredential(['PayPal_USERNAME'=>'New USERNAME'])代码>
和
Epayment::PayPal()->getPayPalCredential('PayPal\u用户名')
让我知道它是否有效 要使用点符号检索config
值,可以在providers.php
中执行以下操作:
$paypalArray = ['paypal' =>
[
'PAYPAL_USERNAME'=>'xxx',
'PAYPAL_PASSWORD'=>'xxx',
'PAYPAL_SIGNATURE'=>'xxxx',
'PAYPAL_CONNECTIONTIMEOUT'=>'3333',
'PAYPAL_RETRY'=>'true',
'PAYPAL_OGENABLED'=>'true',
'PAYPAL_FILENAME'=>'foo/bar',
'PAYPAL_LOGLEVEL'=>'5']
];
config($paypalArray);
现在,您可以检索像config('paypal.paypal\u USERNAME')
这样的值,如果我需要应用程序/库中的文件,该怎么办?您好,按照您的步骤操作,我会收到以下错误:“app\Providers\EPaymentProvider::register():无法打开所需文件”/var/www/html/pay/app/libraries/TomajPayGateways/EPayment.php.php”(包括路径='。:/usr/share/php:/usr/share/pear')”可能是权限问题。也可能是打字错误,因为/var/www/html/pay/app/Libraries/TomajPayGateways/EPayment.php.php
包含两个.php
扩展名。请告诉我是否有任何结果。是的,有两次是.php,但现在我没有找到类“app\Providers\EPaymentProvider”
,但EPaymentProvider在/Providers.tryphp artisan optimize
和composer dump autoload
完成正确,但php artisan optimize
获取我:在第1行的/var/www/html/pay/vendor/laravel/framework/src/light/Foundation/ProviderRepository.php中未找到类“App\Providers\EPaymentProvider”46未找到[Symfony\Component\Debug\Exception\FatalErrorException]类“App\Providers\EPaymentProvider”
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class HelperServiceProvider extends ServiceProvider
{
/**
* Bootstrap the application services.
*
* @return void
*/
public function boot()
{
//
}
/**
* Register the application services.
*
* @return void
*/
public function register()
{
require base_path().'/app/Libraries/EPayment.php';
}
}
$paypalArray = ['paypal' =>
[
'PAYPAL_USERNAME'=>'xxx',
'PAYPAL_PASSWORD'=>'xxx',
'PAYPAL_SIGNATURE'=>'xxxx',
'PAYPAL_CONNECTIONTIMEOUT'=>'3333',
'PAYPAL_RETRY'=>'true',
'PAYPAL_OGENABLED'=>'true',
'PAYPAL_FILENAME'=>'foo/bar',
'PAYPAL_LOGLEVEL'=>'5']
];
config($paypalArray);