HEX
Server: LiteSpeed
System: Linux s3.sitechai.com 4.18.0-553.51.1.lve.1.el8.x86_64 #1 SMP Wed May 14 14:34:57 UTC 2025 x86_64
User: workzeni (2217)
PHP: 8.1.32
Disabled: mail, show_source, system, shell_exec, passthru, exec, eval, shell
Upload Files
File: /home/workzeni/stream-flix.workzenix.com/vendor/livewire/volt/src/Compilers/Mount.php
<?php

namespace Livewire\Volt\Compilers;

use Closure;
use Livewire\Volt\CompileContext;
use Livewire\Volt\Contracts\Compiler;
use Livewire\Volt\Exceptions\SignatureMismatchException;
use Livewire\Volt\Property;
use Livewire\Volt\Support\Reflection;

class Mount implements Compiler
{
    /**
     * {@inheritDoc}
     */
    public function compile(CompileContext $context): array
    {
        $signature = $this->mountMethodSignature($context);

        return [
            <<<PHP
                public $signature
                {
                    (new Actions\InitializeState)->execute(static::\$__context, \$this, get_defined_vars());

                    (new Actions\CallHook('mount'))->execute(static::\$__context, \$this, get_defined_vars());
                }

            PHP
        ];
    }

    /**
     * Get the mount method signature, and ensure the mount and state closures have the same signatures.
     */
    protected function mountMethodSignature(CompileContext $context): string
    {
        try {
            return Reflection::toSingleMethodSignatureFromClosures(
                'mount',
                collect([$context->mount])
                    ->merge(collect($context->state)->map(fn (Property $property) => $property->value))
                    ->filter(fn (mixed $value) => $value instanceof Closure)
                    ->all(),
            );
        } catch (SignatureMismatchException $e) {
            Reflection::setExceptionMessage($e, 'Mount and state closures must have the same signature.');

            throw $e;
        }
    }
}