1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
pathgenerator.php
См. документацию.
1<?php
2
3namespace Bitrix\Main\Cli\Helper;
4
5final class PathGenerator
6{
7 public function __construct(
8 private bool $isCamelCase,
9 private string $rootFolder,
10 )
11 {}
12
13 public function generatePathToClass(string $namespace, string $className): string
14 {
15 return
16 $this->rootFolder
17 . '/'
18 . $this->generatePathByNamespace($namespace)
19 . '/'
20 . $this->generateFileNameByClass($className)
21 ;
22 }
23
24 public function generatePathByNamespace(string $namespace): string
25 {
26 $parts = explode('\\', trim($namespace, '\\'));
27 $moduleParts = array_slice($parts, 0, 2);
28 $tailParts = array_slice($parts, 2);
29
30 $moduleParts = array_map(
31 static fn($part) => strtolower($part),
32 $moduleParts
33 );
34 if (!$this->isCamelCase)
35 {
36 $tailParts = array_map(
37 static fn($part) => strtolower($part),
38 $tailParts
39 );
40 }
41
42 if ($moduleParts[0] === 'bitrix')
43 {
44 $modulesFolder = 'bitrix/modules/';
45 unset($moduleParts[0]);
46 }
47 else
48 {
49 $modulesFolder = 'local/modules/';
50 }
51
52 return
53 $modulesFolder
54 . join('.', $moduleParts)
55 . '/lib/'
56 . join(DIRECTORY_SEPARATOR, $tailParts)
57 ;
58 }
59
60 public function generateFileNameByClass(string $className, string $ext = '.php'): string
61 {
62 if ($this->isCamelCase)
63 {
64 return $className . $ext;
65 }
66
67 return strtolower($className) . $ext;
68 }
69}
generatePathByNamespace(string $namespace)
Определения pathgenerator.php:24
__construct(private bool $isCamelCase, private string $rootFolder,)
Определения pathgenerator.php:7
generateFileNameByClass(string $className, string $ext='.php')
Определения pathgenerator.php:60
generatePathToClass(string $namespace, string $className)
Определения pathgenerator.php:13