| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 | 
							- <?php
 
- /**
 
-  * Created by PhpStorm.
 
-  * User:  NODELOG
 
-  * Date: 16/7/21
 
-  * Time: 下午5:49
 
-  */
 
- namespace common\modules\attachment\components;
 
- use common\modules\attachment\components\contracts\Factory;
 
- use common\modules\attachment\components\image\Processor;
 
- use Yii;
 
- use yii\base\Component;
 
- use yii\base\Exception;
 
- class FilesystemManager extends Component implements Factory
 
- {
 
-     public $defaultDriver;
 
-     /**
 
-      * The array of resolved filesystem drivers.
 
-      *
 
-      * @var array
 
-      */
 
-     public $disks = [];
 
-     /**
 
-      * Get a filesystem instance.
 
-      *
 
-      * @param  string  $name
 
-      * @return FilesystemAdapter
 
-      */
 
-     public function drive($name = null)
 
-     {
 
-         return $this->disk($name);
 
-     }
 
-     /**
 
-      * Get a filesystem instance.
 
-      *
 
-      * @param  string  $name
 
-      * @return FilesystemAdapter
 
-      */
 
-     public function disk($name = null)
 
-     {
 
-         $name = $name ?: $this->defaultDriver;
 
-         return $this->disks[$name] = $this->get($name);
 
-     }
 
-     /**
 
-      * @param $name
 
-      * @return FilesystemAdapter
 
-      * @throws Exception
 
-      */
 
-     protected function get($name)
 
-     {
 
-         if (isset($this->disks[$name])) {
 
-             /**
 
-              * @var  $filesystem
 
-              */
 
-             $filesystem = $this->disks[$name];
 
-             if (!$filesystem instanceof FilesystemAdapter) {
 
-                 $filesystem = new FilesystemAdapter(Yii::createObject($this->disks[$name]));
 
-             }
 
-             return $filesystem;
 
-         }
 
-         throw new Exception('未定义的文件存储');
 
-     }
 
-     public function getPath($url)
 
-     {
 
-         return rtrim(str_replace(Yii::getAlias('@storageUrl'), Yii::getAlias('@storagePath'), $url), '/');
 
-     }
 
-     public function __call($method, $parameters)
 
-     {
 
-         return call_user_func_array([$this->disk(), $method], $parameters);
 
-     }
 
- }
 
 
  |