【问题标题】:Laravel 4 package config fileLaravel 4 包配置文件
【发布时间】:2015-02-22 23:11:57
【问题描述】:

我开发了一个 laravel 4 包,用于备份 mysql 数据库并推送到 github 和 packagist。当我在另一个 laravel 安装上拉包时,一切正常。我发布包的配置文件没有问题,但是当我尝试覆盖发布的配置文件中的一些配置时,包仍然使用供应商中的原始配置文件,它不会查看发布的配置文件。这是我的代码:

供应商/rafia/db-backup/src/Rafia/DbBackup/backupdatabase.php

<?php

namespace Rafia\DbBackup;
use Config;
use Illuminate\Filesystem\Filesystem;
class BackupDatabase {
/**
 * @var
 */
private $filesystem;
/**
 * @param Filesystem $filesystem
 */
public function __construct(Filesystem $filesystem)
{
    $this->filesystem = $filesystem;
}
public function backup()
{
    $this->DbBackupFolder();
    if($this->runBackup() == 0)
    {
        return true;
    }
    return false;
}
private function DbBackupFolder()
{
    if(!$this->filesystem->isDirectory(Config::get('DbBackup::DbBackupPath')))
    {
        return $this->filesystem->makeDirectory(Config::get('DbBackup::DbBackupPath'));
    }
    return true;
}
private function runBackup()
{
    $output = array();
    $return_var = NULL;
    $command = Config::get('DbBackup::DbMysqlDumpPath')." --opt --host=".Config::get('DbBackup::DbHost')." --user=".Config::get('DbBackup::DbUser')." --password=".Config::get('DbBackup::DbPass')." ".Config::get('DbBackup::DbName')." > ".Config::get('DbBackup::DbBackupPath')."/".Config::get('DbBackup::DbName')."_".date('m_d_y_g-i-a').".sql";
    $run = exec($command, $output, $return_var);
    return $return_var;
}
}

供应商/rafia/db-backup/src/Rafia/DbBackup/DbBackupServiceProvider.php

<?php namespace Rafia\DbBackup;

use Illuminate\Foundation\AliasLoader;
use Illuminate\Support\ServiceProvider;


class DbBackupServiceProvider extends ServiceProvider {

/**
 * Indicates if loading of the provider is deferred.
 *
 * @var bool
 */
protected $defer = false;

/**
 * Register the service provider.
 *
 * @return void
 */
public function register()
{
    $this->app['BackupDatabase'] = $this->app->share(function($app)
    {
        $filesystem = $this->app->make('Illuminate\Filesystem\Filesystem');
        return new BackupDatabase($filesystem);
    });

    $this->app->booting(function()
    {
        AliasLoader::getInstance()->alias('BackupDatabase', 'Rafia\DbBackup\Facades\BackupDatabaseFacade');
    });
}

public function boot()
{
    $this->package('Rafia/DbBackup');

}

/**
 * Get the services provided by the provider.
 *
 * @return array
 */
public function provides()
{
    return array();
}

}

供应商/rafia/db-backup/src/config/config.php

<?php

return [
'DbName' => 'packages',
'DbUser' => 'root',
'DbPass' => '',
'DbHost' => 'localhost',
'DbMysqlDumpPath' => 'C:/xampp/mysql/bin/mysqldump',
'DbBackupPath' => app_path().'/storage/DbBackup'
];

供应商/rafia/db-backup/src/Rafia/DbBackup/Facades/BackupDatabaseFacade.php

<?php


namespace Rafia\DbBackup\Facades;

use Illuminate\Support\Facades\Facade;

class BackupDatabaseFacade extends Facade {

protected static function getFacadeAccessor() { return 'BackupDatabase'; }

}

提前感谢您的帮助

【问题讨论】:

    标签: php laravel-4 packages


    【解决方案1】:

    在您的服务提供者定义中添加:

    public function boot() {
        $this->package('vendor/name', 'namespace');
    }
    
    public function register() {
        $loader = $this->app['config']->getLoader();
    
        // Get environment name
        $env = $this->app['config']->getEnvironment();
    
        // Add package namespace with path set, override package if app config exists in the main app directory
        if (file_exists(app_path() . '/config/packages/vendor/namespace')) {
            $loader->addNamespace('namespace', app_path() . '/config/packages/vendor/namespace');
        } else {
            $loader->addNamespace('namespace', __DIR__ . '/../../config');
        }
    
        $config = $loader->load($env, 'config', 'namespace');
    
        $this->app['config']->set('namespace::config', $config);
    
        ...  
    

    This is the article where i have found the solution

    【讨论】:

    • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。也请看这里:stackoverflow.com/help/deleted-answers
    猜你喜欢
    • 2014-11-11
    • 2013-06-12
    • 1970-01-01
    • 2018-09-15
    • 1970-01-01
    • 2014-12-18
    • 1970-01-01
    • 1970-01-01
    • 2014-02-01
    相关资源
    最近更新 更多