使用 App\Libraries Laravel 中的配置文件

Use config file in App\Libraries Laravel

我在 App\Libraries 有一个非 laravel 库,我有文件 providers.php

    <?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::get('providers.paypal.username');
Config::set('providers.paypal.username', 'someName');

我想使用它时必须做什么?

谢谢

首先,该文件位于 config 文件夹之外,因此无法使用 Config facade 进行设置或获取。要继续使用提供程序文件,请将其移动到配置目录,一切都会为您服务。

更好的方法是创建一个 laravel 提供程序并在应用程序提供程序中注册该提供程序。

例如:

你的情况

php artisan make:provider EPaymentProvider

它将在 providers 目录中创建一个提供程序文件 EPaymentProvider.php

现在像这样修改您的 Library/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];
    }
}

并在 EPaymentProvider.phpregister 方法中添加 Libraries/EPayment.php

<?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';
    }
}  

现在在 config/app.php 提供商数组中添加 EPaymentProvider

现在您可以使用
Epayment::PayPal()->setPayPalCredential(['PAYPAL_USERNAME' => 'New Username']);

Epayment::PayPal()->getPayPalCredential('PAYPAL_USERNAME')

让我知道它是否有效。

要使用点表示法检索 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_USERNAME').

这样的值