<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
dave-liddament / phpstan-rule-test-helper example snippets
use DaveLiddament\PhpstanRuleTestHelper\AbstractRuleTestCase;
class CallableFromRuleTest extends AbstractRuleTestCase
{
protected function getRule(): Rule
{
return new CallableFromRule($this->createReflectionProvider());
}
public function testAllowedCall(): void
{
$this->assertIssuesReported(__DIR__ . '/Fixtures/SomeCode.php');
}
}
class SomeCode
{
public function go(): void
{
$item = new Item("hello");
$item->updateName("world"); // ERROR Can not call method
}
}
use DaveLiddament\PhpstanRuleTestHelper\AbstractRuleTestCase;
class CallableFromRuleTest extends AbstractRuleTestCase
{
// `getRule` and `testAllowedCall` methods are as above and are omitted for brevity
protected function getErrorFormatter(): string
{
return "Can not call method";
}
}
class SomeCode
{
public function go(): void
{
$item = new Item("hello");
$item->updateName("world"); // ERROR
}
public function go2(): void
{
$item = new Item("hello");
$item->remove(); // ERROR
}
}
use DaveLiddament\PhpstanRuleTestHelper\AbstractRuleTestCase;
class CallableFromRuleTest extends AbstractRuleTestCase
{
// `getRule` and `testAllowedCall` methods are as above and are omitted for brevity
protected function getErrorFormatter(): string
{
return "Can not call {0} from within class {1}";
}
}
class SomeCode
{
public function go(): void
{
$item = new Item("hello");
$item->updateName("world"); // ERROR Item::updateName|SomeCode
}
public function go2(): void
{
$item = new Item("hello");
$item->remove(); // ERROR Item::remove|SomeCode
}
}
use DaveLiddament\PhpstanRuleTestHelper\AbstractRuleTestCase;
class CallableFromRuleTest extends AbstractRuleTestCase
{
// `getRule` and `testAllowedCall` methods omitted are as above and are for brevity
protected function getErrorFormatter(): ErrorMessageFormatter
{
new class() extends ErrorMessageFormatter {
public function getErrorMessage(string $errorContext): string
{
$parts = $this->getErrorMessageAsParts($errorContext);
$calledFrom = count($parts) === 2 ? 'class '.$parts[1] : 'outside an object';
return sprintf('Can not call %s from %s', $parts[0], $calledFrom);
}
};
}
}
class SomeCode
{
public function go(): void
{
$item = new Item("hello");
$item->updateName("world"); // ERROR Item::updateName|SomeCode
}
}
$item = new Item("hello");
$item->remove(); // ERROR Item::remove
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.