@@ -10,24 +10,18 @@ use Nette\ComponentModel\Container;
1010use Nette \ComponentModel \IComponent ;
1111use Tester \Assert ;
1212
13-
1413require __DIR__ . '/../bootstrap.php ' ;
1514
1615
17- class TestClass extends Container implements ArrayAccess
16+ function handler ( IComponent $ sender , string $ label ): Closure
1817{
19- use Nette \ComponentModel \ArrayAccess;
20-
21- public function attached (IComponent $ obj ): void
22- {
23- Notes::add (static ::class . '::ATTACHED( ' . $ obj ::class . ') ' );
24- }
18+ return fn (IComponent $ obj ) => Notes::add ($ sender ::class . ':: ' . $ label . '( ' . $ obj ::class . ') ' );
19+ }
2520
2621
27- public function detached (IComponent $ obj ): void
28- {
29- Notes::add (static ::class . '::detached( ' . $ obj ::class . ') ' );
30- }
22+ class TestClass extends Container implements ArrayAccess
23+ {
24+ use Nette \ComponentModel \ArrayAccess;
3125}
3226
3327
@@ -47,12 +41,13 @@ class E extends TestClass
4741{
4842}
4943
44+
5045$ d = new D ;
5146$ d ['e ' ] = new E ;
5247$ b = new B ;
53- $ b ->monitor (A::class);
48+ $ b ->monitor (A::class, handler ( $ b , ' ATTACHED ' ), handler ( $ b , ' detached ' ) );
5449$ b ['c ' ] = new C ;
55- $ b ['c ' ]->monitor (A::class);
50+ $ b ['c ' ]->monitor (A::class, handler ( $ b [ ' c ' ], ' ATTACHED ' ), handler ( $ b [ ' c ' ], ' detached ' ) );
5651$ b ['c ' ]['d ' ] = $ d ;
5752
5853// 'a' becoming 'b' parent
@@ -90,7 +85,7 @@ class FooForm extends TestClass
9085 protected function validateParent (Nette \ComponentModel \IContainer $ parent ): void
9186 {
9287 parent ::validateParent ($ parent );
93- $ this ->monitor (self ::class);
88+ $ this ->monitor (self ::class, handler ( $ this , ' ATTACHED ' ), handler ( $ this , ' detached ' ) );
9489 }
9590}
9691
@@ -99,8 +94,8 @@ class FooControl extends TestClass
9994 protected function validateParent (Nette \ComponentModel \IContainer $ parent ): void
10095 {
10196 parent ::validateParent ($ parent );
102- $ this ->monitor (FooPresenter::class);
103- $ this ->monitor (TestClass::class); // double
97+ $ this ->monitor (FooPresenter::class, $ h1 = handler ( $ this , ' ATTACHED ' ), $ h2 = handler ( $ this , ' detached ' ) );
98+ $ this ->monitor (TestClass::class, $ h1 , $ h2 ); // double
10499 }
105100}
106101
0 commit comments