Skip to content

Commit d57c133

Browse files
authored
Watch for proxy changes in debug mode (#105)
1 parent 2c15bb9 commit d57c133

File tree

3 files changed

+22
-3
lines changed

3 files changed

+22
-3
lines changed

composer.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@
2525
"contributte/qa": "^0.4",
2626
"contributte/tester": "^0.3",
2727
"contributte/phpstan": "^0.1",
28-
"mockery/mockery": "^1.3.1"
28+
"mockery/mockery": "^1.3.1",
29+
"tracy/tracy": "^2.10.3"
2930
},
3031
"conflict": {
3132
"nette/di": "<3.0.6",

phpstan.neon

+9
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,12 @@ parameters:
1414
paths:
1515
- src
1616
- .docs
17+
18+
ignoreErrors:
19+
-
20+
message: """
21+
#^Fetching class constant class of deprecated class Doctrine\\\\ORM\\\\Mapping\\\\Driver\\\\AnnotationDriver\\:
22+
This class will be removed in 3\\.0 without replacement\\.$#
23+
"""
24+
count: 2
25+
path: src/DI/OrmAnnotationsExtension.php

src/DI/OrmExtension.php

+11-2
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
use Nettrine\ORM\ManagerRegistry;
2222
use Nettrine\ORM\Mapping\ContainerEntityListenerResolver;
2323
use stdClass;
24+
use Tracy\Debugger;
2425

2526
/**
2627
* @property-read stdClass $config
@@ -30,6 +31,13 @@ final class OrmExtension extends AbstractExtension
3031

3132
public const MAPPING_DRIVER_TAG = 'nettrine.orm.mapping.driver';
3233

34+
public function __construct(private ?bool $debugMode = null)
35+
{
36+
if ($this->debugMode === null) {
37+
$this->debugMode = class_exists(Debugger::class) && Debugger::$productionMode === false;
38+
}
39+
}
40+
3341
public function getConfigSchema(): Schema
3442
{
3543
$parameters = $this->getContainerBuilder()->parameters;
@@ -40,7 +48,7 @@ public function getConfigSchema(): Schema
4048
'configurationClass' => Expect::string(Configuration::class),
4149
'configuration' => Expect::structure([
4250
'proxyDir' => Expect::string($proxyDir)->nullable(),
43-
'autoGenerateProxyClasses' => Expect::anyOf(Expect::int(), Expect::bool(), Expect::type(Statement::class))->default(AbstractProxyFactory::AUTOGENERATE_FILE_NOT_EXISTS),
51+
'autoGenerateProxyClasses' => Expect::anyOf(Expect::int(), Expect::bool(), Expect::type(Statement::class))->default(true),
4452
'proxyNamespace' => Expect::string('Nettrine\Proxy')->nullable(),
4553
'metadataDriverImpl' => Expect::string(),
4654
'entityNamespaces' => Expect::array(),
@@ -94,8 +102,9 @@ public function loadDoctrineConfiguration(): void
94102
}
95103

96104
if (is_bool($config->autoGenerateProxyClasses)) {
105+
$defaultStrategy = $this->debugMode === true ? AbstractProxyFactory::AUTOGENERATE_FILE_NOT_EXISTS_OR_CHANGED : AbstractProxyFactory::AUTOGENERATE_FILE_NOT_EXISTS;
97106
$configuration->addSetup('setAutoGenerateProxyClasses', [
98-
$config->autoGenerateProxyClasses === true ? AbstractProxyFactory::AUTOGENERATE_FILE_NOT_EXISTS : AbstractProxyFactory::AUTOGENERATE_NEVER,
107+
$config->autoGenerateProxyClasses === true ? $defaultStrategy : AbstractProxyFactory::AUTOGENERATE_NEVER,
99108
]);
100109
} elseif (is_int($config->autoGenerateProxyClasses)) {
101110
$configuration->addSetup('setAutoGenerateProxyClasses', [$config->autoGenerateProxyClasses]);

0 commit comments

Comments
 (0)