代码拉取完成,页面将自动刷新
<?php
namespace tlan_turing\migration;
use Symfony\Component\Finder\Finder;
use Symfony\Component\Filesystem\Filesystem;
use Symfony\Component\Filesystem\Exception\IOException;
use Composer\Script\Event;
class UsePhinx
{
public static function run(Event $event)
{
if (!$event->isDevMode()) {
return;
}
$files = [
'vendor/robmorgan/phinx/LICENSE' => 'phinx/LICENSE',
'vendor/robmorgan/phinx/README.md' => 'phinx/README.md',
'vendor/robmorgan/phinx/src/Phinx/Config/' => 'phinx/Config/',
'vendor/robmorgan/phinx/src/Phinx/Db/' => 'phinx/Db/',
'vendor/robmorgan/phinx/src/Phinx/Migration/' => 'phinx/Migration/',
'vendor/robmorgan/phinx/src/Phinx/Seed/' => 'phinx/Seed/',
'vendor/robmorgan/phinx/src/Phinx/Util/' => 'phinx/Util/',
];
$io = $event->getIO();
$fs = new Filesystem;
//clear
$fs->remove('phinx');
foreach ($files as $from => $to) {
// check pattern
$pattern = null;
if (strpos($from, '#') > 0) {
[$from, $pattern] = explode('#', $from, 2);
}
// check the overwrite newer files disable flag (? in end of path)
$overwriteNewerFiles = substr($to, -1) != '?';
if (!$overwriteNewerFiles) {
$to = substr($to, 0, -1);
}
// Check the renaming of file for direct moving (file-to-file)
$isRenameFile = substr($to, -1) != '/' && !is_dir($from);
if (file_exists($to) && !is_dir($to) && !$isRenameFile) {
throw new \InvalidArgumentException('Destination directory is not a directory.');
}
try {
if ($isRenameFile) {
$fs->mkdir(dirname($to));
} else {
$fs->mkdir($to);
}
} catch (IOException $e) {
throw new \InvalidArgumentException(sprintf('<error>Could not create directory %s.</error>', $to), $e->getCode(), $e);
}
if (false === file_exists($from)) {
throw new \InvalidArgumentException(sprintf('<error>Source directory or file "%s" does not exist.</error>', $from));
}
if (is_dir($from)) {
$finder = new Finder;
$finder->files()->ignoreDotFiles(false)->in($from);
if ($pattern) {
$finder->path("#{$pattern}#");
}
foreach ($finder as $file) {
$dest = sprintf('%s/%s', $to, $file->getRelativePathname());
try {
$fs->copy($file, $dest, $overwriteNewerFiles);
// replace namespace
$content = file_get_contents($dest);
$replaces = [
'use Symfony\Component\Console\Input\InputInterface;' => 'use think\console\Input as InputInterface;',
'use Symfony\Component\Console\Output\OutputInterface;' => 'use think\console\Output as OutputInterface;',
'\Symfony\Component\Console\Output\OutputInterface' => '\think\console\Output',
'\Symfony\Component\Console\Input\InputInterface' => '\think\console\Input',
'use Symfony\Component\Console\Output\NullOutput;' => 'use think\migration\NullOutput;',
];
$content = str_replace(array_keys($replaces), array_values($replaces), $content);
file_put_contents($dest, $content);
} catch (IOException $e) {
throw new \InvalidArgumentException(sprintf('<error>Could not copy %s</error>', $file->getBaseName()), $e->getCode(), $e);
}
}
} else {
try {
if ($isRenameFile) {
$fs->copy($from, $to, $overwriteNewerFiles);
} else {
$fs->copy($from, $to . '/' . basename($from), $overwriteNewerFiles);
}
} catch (IOException $e) {
throw new \InvalidArgumentException(sprintf('<error>Could not copy %s</error>', $from), $e->getCode(), $e);
}
}
$io->write(sprintf('Copied file(s) from <comment>%s</comment> to <comment>%s</comment>.', $from, $to));
}
//clear
$fs->remove('vendor/robmorgan/phinx');
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。