Cml\Tools\StaticResource::createSymbolicLink PHP Method

    public static function createSymbolicLink($rootDir = null)
    {
        $isCli = Request::isCli();
        if ($isCli) {
            Output::writeln(Colour::colour('create link start!', [Colour::GREEN, Colour::HIGHLIGHT]));
        } else {
            echo "<br />**************************create link start!*********************<br />";
        }
        is_null($rootDir) && ($rootDir = CML_PROJECT_PATH . DIRECTORY_SEPARATOR . 'public');
        is_dir($rootDir) || mkdir($rootDir, true, 0700);
        //modules_static_path_name
        // 递归遍历目录
        $dirIterator = new \DirectoryIterator(Cml::getApplicationDir('apps_path'));
        foreach ($dirIterator as $file) {
            if (!$file->isDot() && $file->isDir()) {
                $resourceDir = $file->getPathname() . DIRECTORY_SEPARATOR . Cml::getApplicationDir('app_static_path_name');
                if (is_dir($resourceDir)) {
                    $distDir = $rootDir . DIRECTORY_SEPARATOR . $file->getFilename();
                    $cmd = Request::operatingSystem() ? "mklink /d {$distDir} {$resourceDir}" : "ln -s {$resourceDir} {$distDir}";
                    is_dir($distDir) || exec($cmd, $result);
                    $tip = "  create link Application [{$file->getFilename()}] result : [" . (is_dir($distDir) ? 'true' : 'false') . "]";
                    if ($isCli) {
                        Output::writeln(Colour::colour($tip, [Colour::WHITE, Colour::HIGHLIGHT]));
                    } else {
                        print_r('|<span style="color:blue">' . str_pad($tip, 64, ' ', STR_PAD_BOTH) . '</span>|');
                    }
                }
            }
        }
        if ($isCli) {
            Output::writeln(Colour::colour('create link end!', [Colour::GREEN, Colour::HIGHLIGHT]));
        } else {
            echo "<br />****************************create link end!**********************<br />";
        }
    }

Usage Example

Example #1
0
 /**
  * 命令的入口方法
  *
  * @param array $args 传递给命令的参数
  * @param array $options 传递给命令的选项
  */
 public function execute(array $args, array $options = [])
 {
     $rootDir = null;
     if (isset($options['root-dir']) && !empty($options['root-dir'])) {
         $rootDir = $options['root-dir'];
     }
     StaticResource::createSymbolicLink($rootDir);
 }