1 | <?php |
||
22 | class ClassNameResolver implements ClassResolverInterface, ModelJoinerInterface, |
||
23 | TableNameResolverInterface |
||
24 | { |
||
25 | 14 | public function getModelClassName($className, $context) |
|
29 | |||
30 | 4 | private function getClassFileDetails($className) |
|
31 | { |
||
32 | 4 | $arrayed = explode('\\', $className); |
|
33 | 4 | $class = array_pop($arrayed); |
|
34 | 4 | if($arrayed[0] == '') { |
|
35 | 4 | array_shift($arrayed); |
|
36 | } |
||
37 | 4 | return ['class' => $class, 'namespace' => implode('\\', $arrayed)]; |
|
38 | } |
||
39 | |||
40 | 4 | public function getJunctionClassName($classA, $classB) |
|
41 | { |
||
42 | 4 | $classA = $this->getClassFileDetails($classA); |
|
43 | 4 | $classB = $this->getClassFileDetails($classB); |
|
44 | 4 | if($classA['namespace'] != $classB['namespace']) { |
|
45 | throw new NibiiException( |
||
46 | "Cannot automatically join two classes of different " |
||
47 | . "namespaces. Please provide a model joiner or " |
||
48 | . "explicitly specify your joint model." |
||
49 | ); |
||
50 | } |
||
51 | 4 | $classes = [$classA['class'], $classB['class']]; |
|
52 | 4 | sort($classes); |
|
53 | 4 | return "{$classA['namespace']}\\" . implode('', $classes); |
|
54 | } |
||
55 | |||
56 | 36 | public function getTableName($instance) |
|
62 | |||
63 | public static function getDriverAdapterClassName() |
||
71 | } |
||
72 |