1
|
|
|
<?php |
2
|
|
|
|
3
|
|
|
declare(strict_types=1); |
4
|
|
|
|
5
|
|
|
namespace WsdlToPhp\PackageGenerator\File; |
6
|
|
|
|
7
|
|
|
use WsdlToPhp\PackageGenerator\Generator\Utils as GeneratorUtils; |
8
|
|
|
use WsdlToPhp\PackageGenerator\Model\AbstractModel; |
9
|
|
|
use WsdlToPhp\PhpGenerator\Element\PhpAnnotation; |
10
|
|
|
use WsdlToPhp\PhpGenerator\Element\PhpAnnotationBlock; |
11
|
|
|
|
12
|
|
|
final class Utils |
13
|
|
|
{ |
14
|
166 |
|
public static function defineModelAnnotationsFromWsdl(PhpAnnotationBlock $block, AbstractModel $model, array $ignoreMeta = []): void |
15
|
|
|
{ |
16
|
166 |
|
$validMeta = self::getValidMetaValues($model, $ignoreMeta); |
17
|
166 |
|
if (!empty($validMeta)) { |
18
|
|
|
// First line is the "The {propertyName}" |
19
|
126 |
|
if (1 === count($block->getChildren())) { |
20
|
124 |
|
$block->addChild('Meta information extracted from the WSDL'); |
21
|
|
|
} |
22
|
|
|
|
23
|
126 |
|
foreach ($validMeta as $meta) { |
24
|
126 |
|
$block->addChild(new PhpAnnotation(PhpAnnotation::NO_NAME, $meta, AbstractModelFile::ANNOTATION_META_LENGTH)); |
25
|
|
|
} |
26
|
|
|
} |
27
|
|
|
} |
28
|
|
|
|
29
|
166 |
|
public static function getValidMetaValues(AbstractModel $model, array $ignoreMeta = []): array |
30
|
|
|
{ |
31
|
166 |
|
$meta = $model->getMeta(); |
32
|
166 |
|
$validMeta = []; |
33
|
166 |
|
foreach ($meta as $metaName => $metaValue) { |
34
|
136 |
|
if (in_array($metaName, $ignoreMeta, true)) { |
35
|
12 |
|
continue; |
36
|
|
|
} |
37
|
|
|
|
38
|
126 |
|
$finalMeta = self::getMetaValueAnnotation($metaName, $metaValue); |
39
|
126 |
|
if (is_scalar($finalMeta)) { |
40
|
126 |
|
$validMeta[] = $finalMeta; |
41
|
|
|
} |
42
|
|
|
} |
43
|
|
|
|
44
|
166 |
|
return $validMeta; |
45
|
|
|
} |
46
|
|
|
|
47
|
126 |
|
public static function getMetaValueAnnotation(string $metaName, $metaValue): ?string |
48
|
|
|
{ |
49
|
126 |
|
$meta = null; |
50
|
126 |
|
if (is_array($metaValue)) { |
51
|
66 |
|
$metaValue = implode(' | ', array_unique($metaValue)); |
52
|
|
|
} |
53
|
|
|
|
54
|
126 |
|
$metaValue = GeneratorUtils::cleanComment($metaValue, ', ', false === mb_stripos($metaName, 'SOAPHeader')); |
55
|
126 |
|
if (is_scalar($metaValue)) { |
|
|
|
|
56
|
126 |
|
$meta = sprintf("\t- %s: %s", $metaName, $metaValue); |
57
|
|
|
} |
58
|
|
|
|
59
|
126 |
|
return $meta; |
60
|
|
|
} |
61
|
|
|
} |
62
|
|
|
|