introduce deptrac, move a whole lot of stuff around

master
Josha von Gizycki 3 weeks ago
parent a58db4b5d7
commit ee8253ba71

1
.gitignore vendored

@ -2,3 +2,4 @@
var
vendor
tests/.phpunit.cache
.deptrac.cache

@ -1,5 +1,5 @@
.PHONY: cc
cc: stan test
cc: stan test deptrac
.PHONY: stan
stan:
@ -14,3 +14,11 @@ classes: var/classes.png
var/classes.png: $(shell find src)
vendor/bin/php-class-diagram src | plantuml -p > var/classes.png
.PHONY: deptrac
deptrac:
vendor/bin/deptrac
.PHONE: deptrac-display
deptrac-display:
vendor/bin/deptrac --formatter=graphviz-display

@ -17,6 +17,7 @@
"phpunit/phpunit": "^12.4",
"phpstan/phpstan": "^2.1",
"smeghead/php-class-diagram": "^1.6",
"ext-pdo_sqlite": "*"
"ext-pdo_sqlite": "*",
"deptrac/deptrac": "^4.7"
}
}

2165
composer.lock generated

File diff suppressed because it is too large Load Diff

@ -0,0 +1,38 @@
<?php
declare(strict_types=1);
use Deptrac\Deptrac\Contract\Config\Collector\BoolConfig;
use Deptrac\Deptrac\Contract\Config\Collector\ClassLikeConfig;
use Deptrac\Deptrac\Contract\Config\Collector\LayerConfig;
use Deptrac\Deptrac\Contract\Config\DeptracConfig;
use Deptrac\Deptrac\Contract\Config\Layer;
use Deptrac\Deptrac\Contract\Config\Ruleset;
return static function (DeptracConfig $config): void {
$config
->paths('./src')
->excludeFiles('#.*test.*#')
->layers(
$analyzePublic = Layer::withName('AnalyzePublic')->collectors(
ClassLikeConfig::create('Kartierung\\Analyze\\Exception\\.+'),
ClassLikeConfig::create('Kartierung\\Analyze\\Result\\.+')
),
$analyze = Layer::withName('Analyze')->collectors(
BoolConfig::create(
must: [ClassLikeConfig::create('Kartierung\\Analyze\\.+')],
mustNot: [
LayerConfig::create($analyzePublic)
]
)
),
$attribute = Layer::withName('Attribute')->collectors(
ClassLikeConfig::create('Kartierung\\Attribute\\.*'),
),
)
->rulesets(
Ruleset::forLayer($analyze)
->accesses($attribute)
->accesses($analyzePublic),
);
};

@ -4,13 +4,15 @@ declare(strict_types=1);
namespace Kartierung\Analyze;
use Kartierung\Analyze\Exception\InvalidEntity;
use Kartierung\Analyze\Result\EntityField;
use Kartierung\Analyze\Result\EntityResult;
use Kartierung\Analyze\Result\FieldAccess;
use Kartierung\Attribute\Column;
use Kartierung\Attribute\Id;
use Kartierung\Attribute\Table;
use ReflectionClass;
use ReflectionNamedType;
use ReflectionParameter;
use ReflectionProperty;
/**
* @template E of object

@ -2,7 +2,7 @@
declare(strict_types=1);
namespace Kartierung\Analyze;
namespace Kartierung\Analyze\Exception;
use RuntimeException;
use Throwable;

@ -2,7 +2,7 @@
declare(strict_types=1);
namespace Kartierung\Analyze;
namespace Kartierung\Analyze\Exception;
use RuntimeException;
use Throwable;

@ -4,6 +4,11 @@ declare(strict_types=1);
namespace Kartierung\Analyze;
use Kartierung\Analyze\Exception\InvalidRepository;
use Kartierung\Analyze\Result\ParameterFunction;
use Kartierung\Analyze\Result\RepositoryMethod;
use Kartierung\Analyze\Result\RepositoryMethodParameter;
use Kartierung\Analyze\Result\RepositoryResult;
use Kartierung\Attribute\ListResultOf;
use Kartierung\Attribute\Query;
use Kartierung\Repository\ResolutionStrategy\ResolutionStrategyFactory;

@ -2,7 +2,7 @@
declare(strict_types=1);
namespace Kartierung\Analyze;
namespace Kartierung\Analyze\Result;
/**
* @template P of object

@ -2,7 +2,7 @@
declare(strict_types=1);
namespace Kartierung\Analyze;
namespace Kartierung\Analyze\Result;
/**
* @template E of object
@ -11,7 +11,7 @@ readonly class EntityResult
{
/**
* @param class-string<E> $classFqcn
* @param list<EntityField<object>> $fields
* @param EntityField $fields
* @param EntityField<E> $idField
*/
public function __construct(

@ -2,7 +2,7 @@
declare(strict_types=1);
namespace Kartierung\Analyze;
namespace Kartierung\Analyze\Result;
enum FieldAccess
{

@ -2,7 +2,7 @@
declare(strict_types=1);
namespace Kartierung\Analyze;
namespace Kartierung\Analyze\Result;
enum ParameterFunction
{

@ -2,7 +2,7 @@
declare(strict_types=1);
namespace Kartierung\Analyze;
namespace Kartierung\Analyze\Result;
use Kartierung\Repository\ResolutionStrategy\ResolutionStrategy;

@ -2,7 +2,7 @@
declare(strict_types=1);
namespace Kartierung\Analyze;
namespace Kartierung\Analyze\Result;
readonly class RepositoryMethodParameter
{

@ -2,7 +2,7 @@
declare(strict_types=1);
namespace Kartierung\Analyze;
namespace Kartierung\Analyze\Result;
readonly class RepositoryResult
{

@ -4,7 +4,7 @@ declare(strict_types=1);
namespace Kartierung\Repository;
use Kartierung\Analyze\InvalidRepository;
use Kartierung\Analyze\Exception\InvalidRepository;
use Kartierung\Attribute\Query;
use ReflectionClass;

@ -4,7 +4,7 @@ declare(strict_types=1);
namespace Kartierung\Repository\ResolutionStrategy;
use Kartierung\Analyze\RepositoryMethod;
use Kartierung\Analyze\Result\RepositoryMethod;
use Kartierung\Sql\LazyQuery;
use PDO;

@ -5,10 +5,10 @@ declare(strict_types=1);
namespace Kartierung\Repository\ResolutionStrategy;
use Kartierung\Analyze\EntityAnalyzer;
use Kartierung\Analyze\EntityField;
use Kartierung\Analyze\RepositoryMethod;
use Kartierung\Sql\LazyQuery;
use Kartierung\Analyze\Result\EntityField;
use Kartierung\Analyze\Result\RepositoryMethod;
use Kartierung\Sql\DataToEntityMapper;
use Kartierung\Sql\LazyQuery;
use PDO;
use PDOStatement;

@ -4,7 +4,7 @@ declare(strict_types=1);
namespace Kartierung\Repository\ResolutionStrategy;
use Kartierung\Analyze\RepositoryMethod;
use Kartierung\Analyze\Result\RepositoryMethod;
use Kartierung\Sql\LazyQuery;
use PDO;

@ -4,7 +4,7 @@ declare(strict_types=1);
namespace Kartierung\Repository\ResolutionStrategy;
use Kartierung\Analyze\RepositoryMethod;
use Kartierung\Analyze\Result\RepositoryMethod;
use Kartierung\Sql\LazyQuery;
interface ResolutionStrategy

@ -4,7 +4,7 @@ declare(strict_types=1);
namespace Kartierung\Repository\ResolutionStrategy;
use Kartierung\Analyze\InvalidRepository;
use Kartierung\Analyze\Exception\InvalidRepository;
class ResolutionStrategyFactory
{

@ -4,7 +4,7 @@ declare(strict_types=1);
namespace Kartierung\Repository\ResolutionStrategy;
use Kartierung\Analyze\RepositoryMethod;
use Kartierung\Analyze\Result\RepositoryMethod;
use Kartierung\Sql\LazyQuery;
use PDO;

@ -4,7 +4,7 @@ declare(strict_types=1);
namespace Kartierung\Repository\ResolutionStrategy;
use Kartierung\Analyze\RepositoryMethod;
use Kartierung\Analyze\Result\RepositoryMethod;
use Kartierung\Sql\LazyQuery;
use PDO;

@ -4,9 +4,7 @@ declare(strict_types=1);
namespace Kartierung\Sql;
use Kartierung\Analyze\EntityField;
use Kartierung\Analyze\EntityResult;
use Kartierung\Analyze\FieldAccess;
use Kartierung\Analyze\Result\EntityResult;
/**
* @template E of object

@ -4,6 +4,9 @@ declare(strict_types=1);
namespace Kartierung\Analyze;
use Kartierung\Analyze\Exception\InvalidEntity;
use Kartierung\Analyze\Result\EntityField;
use Kartierung\Analyze\Result\FieldAccess;
use Kartierung\EntityWithoutId;
use Kartierung\EntityWithoutTableAttribute;
use Kartierung\EntityWithTwoIds;

@ -4,9 +4,9 @@ declare(strict_types=1);
namespace Analyze;
use Kartierung\Analyze\InvalidRepository;
use Kartierung\Analyze\Exception\InvalidRepository;
use Kartierung\Analyze\RepositoryAnalyzer;
use Kartierung\Analyze\RepositoryMethodParameter;
use Kartierung\Analyze\Result\RepositoryMethodParameter;
use Kartierung\FullEntity;
use Kartierung\InvalidListResultOfRepository;
use Kartierung\Repository;

@ -4,7 +4,7 @@ declare(strict_types=1);
namespace Kartierung\Repository\ResolutionStrategy;
use Kartierung\Analyze\RepositoryMethod;
use Kartierung\Analyze\Result\RepositoryMethod;
use PHPUnit\Framework\Attributes\Group;
use PHPUnit\Framework\TestCase;

@ -4,9 +4,9 @@ declare(strict_types=1);
namespace Kartierung\Sql;
use Kartierung\Analyze\EntityField;
use Kartierung\Analyze\EntityResult;
use Kartierung\Analyze\FieldAccess;
use Kartierung\Analyze\Result\EntityField;
use Kartierung\Analyze\Result\EntityResult;
use Kartierung\Analyze\Result\FieldAccess;
use PHPUnit\Framework\TestCase;
class DateToEntityMapperTest extends TestCase

Loading…
Cancel
Save