diff --git a/_build/test/Tests/Model/Transport/modPackageBuilderTest.php b/_build/test/Tests/Model/Transport/modPackageBuilderTest.php index 5837d1663f3..c9b75d532d7 100644 --- a/_build/test/Tests/Model/Transport/modPackageBuilderTest.php +++ b/_build/test/Tests/Model/Transport/modPackageBuilderTest.php @@ -12,7 +12,9 @@ namespace MODX\Revolution\Tests\Model\Transport; +use MODX\Revolution\modX; use MODX\Revolution\MODxTestCase; +use MODX\Revolution\Transport\modPackageBuilder; /** * Tests related to the modPackageBuilder class. @@ -24,7 +26,27 @@ * @group modPackageBuilder */ class modPackageBuilderTest extends MODxTestCase { - public function testExample() { - $this->assertTrue(true); + /** + * modPackageBuilder must declare $modx to avoid PHP 8.2 dynamic property deprecations. + */ + public function testConstructorDoesNotCreateDynamicModxProperty() + { + $deprecations = []; + set_error_handler(static function ($severity, $message) use (&$deprecations) { + if ($severity === E_DEPRECATED && str_contains($message, 'dynamic property')) { + $deprecations[] = $message; + } + return true; + }, E_DEPRECATED); + + try { + $builder = new modPackageBuilder($this->modx); + } finally { + restore_error_handler(); + } + + $this->assertSame([], $deprecations, 'Expected no dynamic property deprecations on construction'); + $this->assertInstanceOf(modX::class, $builder->modx); + $this->assertSame($this->modx, $builder->modx); } } diff --git a/core/src/Revolution/Transport/modPackageBuilder.php b/core/src/Revolution/Transport/modPackageBuilder.php index a57ae36ef61..5160dbbac18 100644 --- a/core/src/Revolution/Transport/modPackageBuilder.php +++ b/core/src/Revolution/Transport/modPackageBuilder.php @@ -24,6 +24,12 @@ class modPackageBuilder { + /** + * @var modX A reference to the MODX instance. + * @access public + */ + public $modx = null; + /** * @var string The directory in which the package file is located. * @access public