2014-12-25 2 views
1

mysql 데이터베이스를 백업하고 github 및 packagist에 푸시하는 laravel 4 패키지를 개발했습니다. 다른 laravel 설치에서 패키지를 가져 오면 정상적으로 작동합니다. 패키지 구성 파일을 문제없이 게시하지만 게시 된 구성 파일의 구성 중 일부를 다시 정의하려고하면 패키지는 여전히 공급 업체의 원래 구성 파일을 사용하지만 게시 된 구성 파일은 보지 않습니다.Laravel 4 패키지 설정 파일

공급 업체/rafia/DB 백업/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 백업/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 백업/SRC/설정/config.php를

<?php 

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

공급 업체/rafia/DB 백업/SRC/Rafia/DbBack 최대/외관/BackupDatabaseFacade.php

<?php 


namespace Rafia\DbBackup\Facades; 

use Illuminate\Support\Facades\Facade; 

class BackupDatabaseFacade extends Facade { 

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

} 

은 서비스 공급자 정의의 추가에 도움

답변

0

에 미리 감사합니다

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

+0

이 링크는 질문에 대답 수 있지만 , 여기에 답변의 핵심 부분을 포함시키고 참조 용 링크를 제공하는 것이 좋습니다. 링크 된 페이지가 변경되면 링크 전용 답변이 유효하지 않게 될 수 있습니다. 여기를 한 번보세요. http://stackoverflow.com/help/deleted-answers – bummi