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);
- }
- }
|