Задать вопрос
  • PHP. Несколько вариантов в switch case. Какие есть решения?

    GHua
    @GHua
    abstract class AbsctactFileProcessor
    {
        abstract public function supports($extension);
        abstract public function process($file);
    }
    
    class ProcessingProvider
    {
        
        private $processors;
    
        public function __construct()
        {
            $this->processors = array();
        }
    
        public function addProcessor(AbsctactFileProcessor $processor)
        {
            $this->processors[] = $processor;
    
            return $this;
        }
    
        public function process($file)
        {
            $file = new \SplFileInfo($file);
            $extension = $file->getExtension();
            foreach ($this->processors as $processor) {
                if ($processor->supports($extension)) {
    
                    return $processor->process($file);
                }
            }
    
            throw new \LogicException();
        }
    
    }
    
    class SimpleTextProcessor extends AbsctactFileProcessor
    {
    
        public function process($file)
        {
            // return ...
        }
    
        public function supports($extension)
        {
            return in_array($extension, array('txt'));
        }
    
    }
    
    class ImageProcessor extends AbsctactFileProcessor
    {
    
        public function process($file)
        {
            // return ...
        }
    
        public function supports($extension)
        {
            return in_array($extension, array('png', 'gif', 'bmp', 'jpg'));
        }
    }
    
    $provider = new ProcessingProvider();
    $provider->addProcessor(new \SimpleTextProcessor());
    $provider->addProcessor(new \ImageProcessor());
    
    $provider->process('mybestfile.exe');
    Ответ написан
    2 комментария
  • Как победить window is not defined в подключаемом плагине?

    @ghostiam
    На Go писатель, серверов пинатель.
    В Nuxt плагины обрабатываются и на сервере и на клиенте, но так как объекта window на сервере нет, необходимо указать nuxt, что данный плагин не стоит использовать при SSR

    module.exports = {
      plugins: [
        // ssr: false to only include it on client-side
        { src:  '~plugins/fullpage-vue.js', ssr: false }
      ],
    build: {
        vendor: [
          'fullpage-vue'
        ]
       ...
    }

    Источник: https://nuxtjs.org/examples/plugins
    Ответ написан
    1 комментарий