Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
PageObjectHandler.php
Go to the documentation of this file.
1 <?php
8 
14 
16 {
17  const PAGE = 'page';
18  const SECTION = 'section';
19  const URL = 'url';
20  const MODULE = 'module';
21  const PARAMETERIZED = 'parameterized';
22  const AREA = 'area';
23  const NAME_BLACKLIST_ERROR_MSG = "Page names cannot contain non alphanumeric characters.\tPage='%s'";
24 
30  private static $INSTANCE;
31 
37  private $pageObjects = [];
38 
44  private function __construct()
45  {
47  $parser = $objectManager->get(PageParser::class);
48  $parserOutput = $parser->getData(self::PAGE);
49 
50  if (!$parserOutput) {
51  // No *Page.xml files found so give up
52  return;
53  }
54 
55  foreach ($parserOutput as $pageName => $pageData) {
56  if (preg_match('/[^a-zA-Z0-9_]/', $pageName)) {
57  throw new XmlException(sprintf(self::NAME_BLACKLIST_ERROR_MSG, $pageName));
58  }
59  $area = $pageData[self::AREA];
60  $url = $pageData[self::URL];
61 
62  if ($area == 'admin') {
63  $url = ltrim($url, "/");
64  }
65 
66  $module = $pageData[self::MODULE];
67  $sectionNames = array_keys($pageData[self::SECTION] ?? []);
68  $parameterized = $pageData[self::PARAMETERIZED] ?? false;
69 
70  $this->pageObjects[$pageName] =
71  new PageObject($pageName, $url, $module, $sectionNames, $parameterized, $area);
72  }
73  }
74 
81  public static function getInstance()
82  {
83  if (!self::$INSTANCE) {
84  self::$INSTANCE = new PageObjectHandler();
85  }
86 
87  return self::$INSTANCE;
88  }
89 
96  public function getObject($name)
97  {
98  if (array_key_exists($name, $this->pageObjects)) {
99  return $this->getAllObjects()[$name];
100  }
101 
102  return null;
103  }
104 
110  public function getAllObjects()
111  {
112  return $this->pageObjects;
113  }
114 }
$objectManager
Definition: bootstrap.php:17
if(!isset($_GET['name'])) $name
Definition: log.php:14