JFIF  x x C         C     "        } !1AQa "q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz        w !1AQ aq"2B #3Rbr{ gilour

File "PropertyDefinitionCompiler.php"

Full Path: /home/palsarh/web/palsarh.in/public_html/vendor/cuyz/valinor/src/Definition/Repository/Cache/Compiler/PropertyDefinitionCompiler.php
File size: 1.18 KB
MIME-type: text/x-php
Charset: utf-8

<?php

declare(strict_types=1);

namespace CuyZ\Valinor\Definition\Repository\Cache\Compiler;

use CuyZ\Valinor\Definition\PropertyDefinition;

/** @internal */
final class PropertyDefinitionCompiler
{
    public function __construct(
        private TypeCompiler $typeCompiler,
        private AttributesCompiler $attributesCompiler
    ) {}

    public function compile(PropertyDefinition $property): string
    {
        $type = $this->typeCompiler->compile($property->type);
        $nativeType = $this->typeCompiler->compile($property->nativeType);
        $hasDefaultValue = var_export($property->hasDefaultValue, true);
        $defaultValue = var_export($property->defaultValue, true);
        $isPublic = var_export($property->isPublic, true);
        $attributes = $this->attributesCompiler->compile($property->attributes);

        return <<<PHP
            new \CuyZ\Valinor\Definition\PropertyDefinition(
                '{$property->name}',
                '{$property->signature}',
                $type,
                $nativeType,
                $hasDefaultValue,
                $defaultValue,
                $isPublic,
                $attributes
            )
            PHP;
    }
}