public function setup(string $type = "all"): AbstractEdge
    {
        $fields = function(): AbstractEdge
        {
            $this->fields = Loaders\FieldsLoader::fetchArray($this);
            return $this;
        };

        $notification = function(): AbstractEdge
        {
            $is_a_notification = function(string $class_name): bool
            {
                if(!class_exists($class_name))
                    return false;
                $reflector = new \ReflectionClass($class_name);
                return $reflector->isSubclassOf(AbstractNotification::class);
            };
            $notification_class = get_class($this)."Notification";
            if($is_a_notification($notification_class)) {
                $this->notification = new $notification_class($this);
            }
            return $this;
        };

        
        $all = function() use ($fields, $notification): AbstractEdge
        {
            $fields();    
            return $notification();
        };

        if($type!="type" && in_array($type, get_defined_vars()))
            return $$type();
    }
public function setup(string $type = "all"): AbstractEdge
    {
        $fields = function(): AbstractEdge
        {
            $this->fields = Loaders\FieldsLoader::fetchArray($this);
            return $this;
        };

        $notification = function(): AbstractEdge
        {
            $is_a_notification = function(string $class_name): bool
            {
                if(!class_exists($class_name))
                    return false;
                $reflector = new \ReflectionClass($class_name);
                return $reflector->isSubclassOf(AbstractNotification::class);
            };
            $notification_class = get_class($this)."Notification";
            if($is_a_notification($notification_class)) {
                $this->notification = new $notification_class($this);
            }
            return $this;
        };

        
        $all = function() use ($fields, $notification): AbstractEdge
        {
            $fields();    
            return $notification();
        };

        if($type!="type" && in_array($type, get_defined_vars()))
            return $$type();
    }
public function setup ( string $ type = "all" ) : AbstractEdge { $ fields = function ( ) : AbstractEdge { $ this -> fields = Loaders \ FieldsLoader :: fetchArray ( $ this ) ; return $ this ; } ; $ notification = function ( ) : AbstractEdge { $ is_a_notification = function ( string $ class_name ) : bool { if ( ! class_exists ( $ class_name ) ) return false ; $ reflector = new \ ReflectionClass ( $ class_name ) ; return $ reflector -> isSubclassOf ( AbstractNotification :: class ) ; } ; $ notification_class = get_class ( $ this ) . "Notification" ; if ( $ is_a_notification ( $ notification_class ) ) { $ this -> notification = new $ notification_class ( $ this ) ; } return $ this ; } ; $ all = function ( ) use ( $ fields , $ notification ) : AbstractEdge { $ fields ( ) ; return $ notification ( ) ; } ; if ( $ type != "type" && in_array ( $ type , get_defined_vars ( ) ) ) return $ $ type ( ) ; }
All methods related to setting up this object

Namely; fields and notification.
"all" stands for executing all available methods.

@param string $type

@return AbstractEdge
All methods related to setting up this object