File tree Expand file tree Collapse file tree 5 files changed +80
-3
lines changed
Expand file tree Collapse file tree 5 files changed +80
-3
lines changed Original file line number Diff line number Diff line change 11<?php
22
3- namespace WebApp \Service ;
3+ namespace WebApp \Builder ;
44
55/** Descendants only need to declare methods like getViewLink(), getEditLink() etc. */
66class AbstractLinkBuilder implements \TgUtils \LinkBuilder {
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ namespace WebApp \Builder ;
4+
5+ abstract class AbstractMenuBuilder implements MenuBuilder {
6+
7+ protected $ app ;
8+
9+ public function __construct ($ app ) {
10+ $ this ->app = $ app ;
11+ }
12+
13+ }
14+
15+
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ namespace WebApp \Builder ;
4+
5+ interface MenuBuilder {
6+
7+ public function getMenu ($ subject , $ params = NULL );
8+
9+ }
10+
11+
Original file line number Diff line number Diff line change 22
33namespace WebApp \Service ;
44
5- class LinkBuilderService extends AbstractService {
5+ class LinkBuilderService extends AbstractService implements \TgUtils \LinkBuilder {
6+
7+ protected $ builders ;
68
79 public function __construct ($ app ) {
810 parent ::__construct ($ app );
911 $ this ->builders = array ();
1012 }
1113
12- public function getLink ($ subject , $ action = LinkBuilder::VIEW , $ params = NULL ) {
14+ public function getLink ($ subject , $ action = \ TgUtils \ LinkBuilder::VIEW , $ params = NULL ) {
1315 $ builder = $ this ->getBuilder ($ subject );
1416 if ($ builder != NULL ) {
1517 return $ builder ->getLink ($ subject , $ action , $ params );
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ namespace WebApp \Service ;
4+
5+ class MenuBuilderService extends AbstractService implements \WebApp \Builder \MenuBuilder {
6+
7+ protected $ builders ;
8+
9+ public function __construct ($ app ) {
10+ parent ::__construct ($ app );
11+ $ this ->builders = array ();
12+ }
13+
14+ public function getMenu ($ subject , $ params = NULL ) {
15+ $ builder = $ this ->getBuilder ($ subject );
16+ if ($ builder != NULL ) {
17+ return $ builder ->getMenu ($ subject , $ params );
18+ }
19+ return NULL ;
20+ }
21+
22+ public function getBuilder ($ subject ) {
23+ $ name = $ this ->getBuilderName ($ subject );
24+ if (!isset ($ this ->builders [$ name ])) {
25+ $ this ->builders [$ name ] = $ this ->createBuilder ($ name );
26+ }
27+ return $ this ->builders [$ name ];
28+ }
29+
30+ protected function createBuilder ($ name ) {
31+ return NULL ;
32+ }
33+
34+ protected function getBuilderName ($ subject ) {
35+ $ name = NULL ;
36+ if (is_string ($ subject )) {
37+ $ name = $ subject ;
38+ } else if (is_object ($ subject )) {
39+ $ name = strtolower (get_class ($ subject ));
40+ if ($ pos = strrpos ($ name , '\\' )) {
41+ $ name = substr ($ name , $ pos + 1 );
42+ }
43+ }
44+ return $ name ;
45+ }
46+
47+ }
48+
49+
You can’t perform that action at this time.
0 commit comments