• Динамические namespace в Yii2, реализация?

    t1h_on
    @t1h_on Автор вопроса
    Да и нечего писать даже_
    Решил проблему так: Есть модуль основной и его мы будем клонировать, собрал из просторов интернета код для этих целей:

    public function actionCopy(
            $basePath = '/OSPanel/domains/КаталогДомена/company/modules/',
            $source = 'Компания 1',
            $dest = 'Компания 2',
            $overwrite = true,
            $sourcestr = 'Компания 1',
            $deststr = 'Компания 2'
        )
        {
            //Давайте просто убедимся, что наша новая папка уже создана.
            if (!is_dir($basePath . $dest))
                mkdir($basePath . $dest);
            if ($handle = opendir($basePath . $source)) {     
                while (false !== ($file = readdir($handle))) { 
                    if ($file != '.' && $file != '..') {
                        $path = $source . '/' . $file;
                        $pathNew = $basePath . $dest . '/' . $file;
    
                        if (is_file($basePath . $path)) {
    
                            if (!is_file($basePath . $dest . '/' . $file) || $overwrite) {
                                if (!@copy($basePath . $path, $basePath . $dest . '/' . $file)) {
                                    echo '<font color="red">File (' . $path . ') could not be copied, likely a permissions problem.</font>';
                                }
                                $this->strFile($sourcestr, $deststr, $pathNew);
                            }
                        } elseif (is_dir($basePath . $path)) {
                            if (!is_dir($basePath . $dest . '/' . $file))
                                mkdir($basePath . $dest . '/' . $file); // создать подкаталог перед копированием подкаталога
    
                            $this->actionCopy($basePath, $path, $dest . '/' . $file, $overwrite, $sourcestr, $deststr); //рекурсия!
                        }
                    }
                }
                closedir($handle);
            }
        }
        
        public function strFile($oldstr, $newstr, $yourfile)
        {
            $file = file($yourfile);
            echo 'Открыли файл ' . $yourfile.' ';
    
            if (is_array($file)) {
                foreach ($file as $key => $value) {
                   $file[$key] = preg_replace('/'.$oldstr.'/', $newstr, $value);
                }
            } else {
                exit ("Ошибка");
            }
            $fp = fopen($yourfile, "w+"); // перезаписываем независимо от длины новой строки
            fwrite($fp, implode("", $file));
            fclose($fp);
        }


    Копируется Компания 1 в Компания 2 и файл который копируется проверяется на Компания 1 и Заменяет на Компания 2

    1. Если у кого есть код что бы копировать базу данных
    2. Подключение модуля в файл (не вручную)

    Буду рад за код))
    Ответ написан
    Комментировать