File "Group.php"

Full Path: /var/www/html/back/vendor/knuckleswtf/scribe/src/Attributes/Group.php
File size: 1.13 KB
MIME-type: text/x-php
Charset: utf-8

<?php

namespace Knuckles\Scribe\Attributes;

use Attribute;

#[Attribute(Attribute::TARGET_FUNCTION | Attribute::TARGET_METHOD | Attribute::TARGET_CLASS)]
class Group
{
    public function __construct(
        public mixed $name,
        public ?string $description = '',
        /** You can use the separate #[Authenticated] attribute, or pass authenticated: false to this. */
        public ?bool   $authenticated = null,
    ){
    }

    protected function getName(): string
    {
        if (is_string($this->name)) {
            return $this->name;
        }

        if (interface_exists('BackedEnum') && is_a($this->name, 'BackedEnum')) {
            return $this->name->value;
        }

        throw new \InvalidArgumentException(
            'The name property of a group must be either a PHP Backed Enum or a string'
        );
    }

    public function toArray()
    {
        $data = [
            "groupName" => $this->getName(),
            "groupDescription" => $this->description,
        ];

        if (!is_null($this->authenticated)) {
            $data["authenticated"] = $this->authenticated;
        }

        return $data;

    }
}