本文整理匯總了PHP中Symfony\CS\Tokenizer\Tokens::clearCache方法的典型用法代碼示例。如果您正苦於以下問題:PHP Tokens::clearCache方法的具體用法?PHP Tokens::clearCache怎麽用?PHP Tokens::clearCache使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類Symfony\CS\Tokenizer\Tokens
的用法示例。
在下文中一共展示了Tokens::clearCache方法的7個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的PHP代碼示例。
示例1: makeTest
protected function makeTest($expected, $input = null, \SplFileInfo $file = null, FixerInterface $fixer = null)
{
if ($expected === $input) {
throw new \InvalidArgumentException('Input parameter must not be equal to expected parameter.');
}
$fixer = $fixer ?: $this->getFixer();
$file = $file ?: $this->getTestFile();
$fileIsSupported = $fixer->supports($file);
if (null !== $input) {
Tokens::clearCache();
$tokens = Tokens::fromCode($input);
if ($fileIsSupported) {
$this->assertTrue($fixer->isCandidate($tokens), 'Fixer must be a candidate for input code.');
$fixResult = $fixer->fix($file, $tokens);
$this->assertNull($fixResult, '->fix method must return null.');
}
$this->assertTrue($tokens->isChanged(), 'Tokens collection built on input code must be marked as changed after fixing.');
$this->assertSame($expected, $tokens->generateCode(), 'Code build on input code must match expected code.');
Tokens::clearCache();
$expectedTokens = Tokens::fromCode($expected);
$tokens->clearEmptyTokens();
$this->assertTokens($expectedTokens, $tokens);
}
Tokens::clearCache();
$tokens = Tokens::fromCode($expected);
if ($fileIsSupported) {
$fixResult = $fixer->fix($file, $tokens);
$this->assertNull($fixResult, '->fix method must return null.');
}
$this->assertFalse($tokens->isChanged(), 'Tokens collection built on expected code must not be marked as changed after fixing.');
$this->assertSame($expected, $tokens->generateCode(), 'Code build on expected code must not change.');
}
示例2: fixFile
private function fixFile(\SplFileInfo $file, $dryRun)
{
$new = $old = file_get_contents($file->getRealpath());
$appliedFixers = [];
Tokens::clearCache();
try {
foreach ($this->fixers as $fixer) {
if (!$fixer->supports($file)) {
continue;
}
$newest = $fixer->fix($file, $new);
if ($newest !== $new) {
$appliedFixers[] = $fixer->getName();
}
$new = $newest;
}
} catch (\Exception $e) {
if ($this->errorsManager) {
$this->errorsManager->report(ErrorsManager::ERROR_TYPE_EXCEPTION, $this->getFileRelativePathname($file), $e->__toString());
}
return;
}
if ($new !== $old) {
if (!$dryRun) {
file_put_contents($file->getRealpath(), $new);
}
}
return $appliedFixers;
}
示例3: testCommentBlockStartDetection
/**
* @param int $expected
* @param string $code
* @param int $index
*
* @dataProvider provideCommentBlockStartDetectionCases
*/
public function testCommentBlockStartDetection($expected, $code, $index)
{
Tokens::clearCache();
$tokens = Tokens::fromCode($code);
$fixer = $this->getFixer();
$method = new \ReflectionMethod($fixer, 'findCommentBlockStart');
$method->setAccessible(true);
if ($expected !== ($result = $method->invoke($fixer, $tokens, $index))) {
$this->fail(sprintf('Expected index %d (%s) got index %d (%s).', $expected, $tokens[$expected]->toJson(), $result, $tokens[$result]->toJson()));
}
}
示例4: makeTest
protected function makeTest($expected, $input = null, \SplFileInfo $file = null)
{
if ($expected === $input) {
throw new \InvalidArgumentException('Input parameter must not be equal to expected parameter.');
}
$fixer = $this->getFixer();
$file = $file ?: $this->getTestFile();
$fileIsSupported = $fixer->supports($file);
if (null !== $input) {
$fixedCode = $fileIsSupported ? $fixer->fix($file, $input) : $input;
$this->assertSame($expected, $fixedCode);
$tokens = Tokens::fromCode($fixedCode);
// Load cached collection (used by the fixer)
Tokens::clearCache();
$expectedTokens = Tokens::fromCode($fixedCode);
// Load the expected collection based on PHP parsing
$this->assertTokens($expectedTokens, $tokens);
}
$this->assertSame($expected, $fileIsSupported ? $fixer->fix($file, $expected) : $expected);
}
示例5: fixFile
public function fixFile(\SplFileInfo $file, array $fixers, $dryRun, $diff, FileCacheManager $fileCacheManager)
{
$new = $old = file_get_contents($file->getRealpath());
if ('' === $old || !$fileCacheManager->needFixing($this->getFileRelativePathname($file), $old) || PHP_VERSION_ID >= 50306 && PHP_VERSION_ID < 50400 && false !== stripos($old, '__halt_compiler()')) {
$this->dispatchEvent(FixerFileProcessedEvent::NAME, FixerFileProcessedEvent::create()->setStatus(FixerFileProcessedEvent::STATUS_SKIPPED));
return;
}
try {
$this->linter->lintFile($file->getRealpath());
} catch (LintingException $e) {
$this->dispatchEvent(FixerFileProcessedEvent::NAME, FixerFileProcessedEvent::create()->setStatus(FixerFileProcessedEvent::STATUS_INVALID));
$this->errorsManager->report(new Error(Error::TYPE_INVALID, $this->getFileRelativePathname($file)));
return;
}
$old = file_get_contents($file->getRealpath());
$appliedFixers = array();
// we do not need Tokens to still caching previously fixed file - so clear the cache
Tokens::clearCache();
$tokens = Tokens::fromCode($old);
$newHash = $oldHash = $tokens->getCodeHash();
try {
foreach ($fixers as $fixer) {
if (!$fixer->supports($file) || !$fixer->isCandidate($tokens)) {
continue;
}
$fixer->fix($file, $tokens);
if ($tokens->isChanged()) {
$tokens->clearEmptyTokens();
$tokens->clearChanged();
$appliedFixers[] = $fixer->getName();
}
}
} catch (\Exception $e) {
$this->dispatchEvent(FixerFileProcessedEvent::NAME, FixerFileProcessedEvent::create()->setStatus(FixerFileProcessedEvent::STATUS_EXCEPTION));
$this->errorsManager->report(new Error(Error::TYPE_EXCEPTION, $this->getFileRelativePathname($file)));
return;
}
$fixInfo = null;
if (!empty($appliedFixers)) {
$new = $tokens->generateCode();
$newHash = $tokens->getCodeHash();
}
// We need to check if content was changed and then applied changes.
// But we can't simple check $appliedFixers, because one fixer may revert
// work of other and both of them will mark collection as changed.
// Therefore we need to check if code hashes changed.
if ($oldHash !== $newHash) {
try {
$this->linter->lintSource($new);
} catch (LintingException $e) {
$this->dispatchEvent(FixerFileProcessedEvent::NAME, FixerFileProcessedEvent::create()->setStatus(FixerFileProcessedEvent::STATUS_LINT));
$this->errorsManager->report(new Error(Error::TYPE_LINT, $this->getFileRelativePathname($file)));
return;
}
if (!$dryRun && false === @file_put_contents($file->getRealpath(), $new)) {
$error = error_get_last();
if ($error) {
throw new IOException(sprintf('Failed to write file "%s", "%s".', $file->getRealpath(), $error['message']), 0, null, $file->getRealpath());
}
throw new IOException(sprintf('Failed to write file "%s".', $file->getRealpath()), 0, null, $file->getRealpath());
}
$fixInfo = array('appliedFixers' => $appliedFixers);
if ($diff) {
$fixInfo['diff'] = $this->stringDiff($old, $new);
}
}
$fileCacheManager->setFile($this->getFileRelativePathname($file), $new);
$this->dispatchEvent(FixerFileProcessedEvent::NAME, FixerFileProcessedEvent::create()->setStatus($fixInfo ? FixerFileProcessedEvent::STATUS_FIXED : FixerFileProcessedEvent::STATUS_NO_CHANGES));
return $fixInfo;
}
示例6: fixFile
public function fixFile(\SplFileInfo $file, array $fixers, $dryRun, $diff, FileCacheManager $fileCacheManager)
{
$new = $old = file_get_contents($file->getRealpath());
if (!$fileCacheManager->needFixing($this->getFileRelativePathname($file), $old)) {
if ($this->eventDispatcher) {
$this->eventDispatcher->dispatch(FixerFileProcessedEvent::NAME, FixerFileProcessedEvent::create()->setStatus(FixerFileProcessedEvent::STATUS_SKIPPED));
}
return;
}
if ($this->lintManager && !$this->lintManager->createProcessForFile($file->getRealpath())->isSuccessful()) {
if ($this->eventDispatcher) {
$this->eventDispatcher->dispatch(FixerFileProcessedEvent::NAME, FixerFileProcessedEvent::create()->setStatus(FixerFileProcessedEvent::STATUS_INVALID));
}
return;
}
$appliedFixers = array();
// we do not need Tokens to still caching previously fixed file - so clear the cache
Tokens::clearCache();
try {
foreach ($fixers as $fixer) {
if (!$fixer->supports($file)) {
continue;
}
$newest = $fixer->fix($file, $new);
if ($newest !== $new) {
$appliedFixers[] = $fixer->getName();
}
$new = $newest;
}
} catch (\Exception $e) {
if ($this->eventDispatcher) {
$this->eventDispatcher->dispatch(FixerFileProcessedEvent::NAME, FixerFileProcessedEvent::create()->setStatus(FixerFileProcessedEvent::STATUS_EXCEPTION));
}
if ($this->errorsManager) {
$this->errorsManager->report(ErrorsManager::ERROR_TYPE_EXCEPTION, $this->getFileRelativePathname($file), $e->__toString());
}
return;
}
$fixInfo = null;
if ($new !== $old) {
if ($this->lintManager) {
$lintProcess = $this->lintManager->createProcessForSource($new);
if (!$lintProcess->isSuccessful()) {
if ($this->eventDispatcher) {
$this->eventDispatcher->dispatch(FixerFileProcessedEvent::NAME, FixerFileProcessedEvent::create()->setStatus(FixerFileProcessedEvent::STATUS_LINT));
}
if ($this->errorsManager) {
$this->errorsManager->report(ErrorsManager::ERROR_TYPE_LINT, $this->getFileRelativePathname($file), $lintProcess->getOutput());
}
return;
}
}
if (!$dryRun) {
file_put_contents($file->getRealpath(), $new);
}
$fixInfo = array('appliedFixers' => $appliedFixers);
if ($diff) {
$fixInfo['diff'] = $this->stringDiff($old, $new);
}
}
$fileCacheManager->setFile($this->getFileRelativePathname($file), $new);
if ($this->eventDispatcher) {
$this->eventDispatcher->dispatch(FixerFileProcessedEvent::NAME, FixerFileProcessedEvent::create()->setStatus($fixInfo ? FixerFileProcessedEvent::STATUS_FIXED : FixerFileProcessedEvent::STATUS_NO_CHANGES));
}
return $fixInfo;
}
示例7: fixFile
public function fixFile(\SplFileInfo $file, array $fixers, $dryRun, $diff, FileCacheManager $fileCacheManager)
{
$new = $old = file_get_contents($file->getRealpath());
if (!$fileCacheManager->needFixing($this->getFileRelativePathname($file), $old)) {
if ($this->eventDispatcher) {
$this->eventDispatcher->dispatch(FixerFileProcessedEvent::NAME, FixerFileProcessedEvent::create()->setStatus(FixerFileProcessedEvent::STATUS_SKIPPED));
}
return;
}
$appliedFixers = array();
// we do not need Tokens to still caching previously fixed file - so clear the cache
Tokens::clearCache();
foreach ($fixers as $fixer) {
if (!$fixer->supports($file)) {
continue;
}
$newest = $fixer->fix($file, $new);
if ($newest !== $new) {
$appliedFixers[] = $fixer->getName();
}
$new = $newest;
}
$fixInfo = null;
if ($new !== $old) {
if (!$dryRun) {
file_put_contents($file->getRealpath(), $new);
}
$fixInfo = array('appliedFixers' => $appliedFixers);
if ($diff) {
$fixInfo['diff'] = $this->stringDiff($old, $new);
}
}
$fileCacheManager->setFile($this->getFileRelativePathname($file), $new);
if ($this->eventDispatcher) {
$this->eventDispatcher->dispatch(FixerFileProcessedEvent::NAME, FixerFileProcessedEvent::create()->setStatus($fixInfo ? FixerFileProcessedEvent::STATUS_FIXED : FixerFileProcessedEvent::STATUS_NO_CHANGES));
}
return $fixInfo;
}