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

时间:2016-02-15 22:16:25

标签: php laravel config

我在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');

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

谢谢

3 个答案:

答案 0 :(得分:1)

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

例如:

在你的情况下

php artisan make:provider EPaymentProvider

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

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

register方法EPaymentProvider.php添加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';
    }
}  

现在在EPaymentProvider提供商数组

中添加config/app.php

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

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

让我知道它是否有效。

答案 1 :(得分:0)

首先,该文件位于config文件夹之外,因此无法设置或使用Config外观。要仍然使用提供程序文件将其移动到config目录,一切都将适合您。

答案 2 :(得分:0)

要使用点表示法检索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')等值。