2015-06-26 40 views

回答

1

它實際上是不安全的編輯作曲家包,出於某種原因,你指出。

我要做的就是擴展需要改變,我想的類/。

我與文件系統類在這裏完成的。它不能確保它不會中斷,但它確實可以讓您更新而不會覆蓋您的更改。

配置/ app.php

<?php 

return [ 

    'providers' => [ 

//  'Illuminate\Filesystem\FilesystemServiceProvider', 
     'MyApp\Filesystem\FilesystemServiceProvider', 
    ], 

    'aliases' => [ 
     ... 
    ], 

]; 

MyApp的\文件系統\ FilesystemServiceProvider.php

<?php namespace MyApp\Filesystem; 

use Config; 
use Storage; 
use League\Flysystem\Filesystem; 
use Dropbox\Client as DropboxClient; 
use League\Flysystem\Dropbox\DropboxAdapter; 
use Illuminate\Filesystem\FilesystemManager as LaravelFilesystemManager; 

class FilesystemManager extends LaravelFilesystemManager{ 

    public function createDropboxDriver(array $config) 
    { 
     $client = new DropboxClient($config['token'], $config['app']); 

     return $this->adapt(
      new Filesystem(new DropboxAdapter($client)) 
     ); 
    } 
} 
+0

感謝您的回答。在這種方法中,我必須將每個類中的名稱空間更改爲「MyApp」,或者在複製後從我的composer.json中移除原始包會更好嗎? – TimothyBuktu

+0

這取決於您需要更改多少包。對於我所做的,我只需要更新2個類,因此我只是將這兩個類拉入我的名稱空間,並進行了調整。我完整地保留了原始類,並在我的應用程序中引用更新的類。如果它很廣泛,您可以隨時在github上分發回購,並在那裏進行更新。這樣當有變化時,它會給你時間來更新你的代碼。 – whoacowboy

+0

我通常會分叉倉庫,並在倉庫部分的composer.json文件中引用我分叉的倉庫。當你說這個軟件包被更新時,你不會得到更新。 –

4

簡單,快速,安全的方法:

  1. 創建目錄在Laravel的根目錄中ory並將其命名爲軟件包或任何你喜歡的。
  2. 將修改後的軟件包從供應商目錄移至軟件包目錄。
  3. 更新composer.json以從packages目錄而不是vendor目錄加載軟件包。

首先除去它需要

"require": { 
    "php": ">=5.6.4", 
    "laravel/framework": "5.3.*", 
    "laravelcollective/html": "^5.3.0", <==== remove this line       
    "barryvdh/laravel-debugbar": "^2.3", 
    "doctrine/dbal": "^2.5" 
}, 

然後將其添加到自動加載

"autoload": { 
    "psr-4": { 
     "App\\": "app/", 
     "Collective\\Html\\": "packages/laravelcollective/html/src", <==== add this line 
    }, 
} 

請不要忘記運行

composer dumpauto