private function verifyHandler(callable $func): bool
    {
        $reflection = Func::getReflection($func);
        $params = $reflection->getParameters();
        if (count($params) !== 2) {
            return false;
        }

        list($value, $validator) = $params;

        # `$value` must
        # - have no typehint
        # - not be optional
        # - be passed by reference
        if (
            $value->getType() !== null ||
            $value->isOptional()
            //!$value->isPassedByReference()
        ) {
            return false;
        }

        # validator must
        # - have a typehint of \sndsgd\form\Validator
        # - be optional
        # - have a default value of `null`
        $type = $validator->getType();
        if (
            !$type ||
            (string) $type !== \sndsgd\form\Validator::class ||
            !$type->allowsNull()
        ) {
            return false;
        }

        # return type must be boolean
        $returnType = $reflection->getReturnType();
        if (!$returnType || (string) $returnType !== "bool") {
            return false;
        }

        $this->classname = __CLASS__."\\".md5($reflection);
        return true;
    }
private function verifyHandler(callable $func): bool
    {
        $reflection = Func::getReflection($func);
        $params = $reflection->getParameters();
        if (count($params) !== 2) {
            return false;
        }

        list($value, $validator) = $params;

        # `$value` must
        # - have no typehint
        # - not be optional
        # - be passed by reference
        if (
            $value->getType() !== null ||
            $value->isOptional()
            //!$value->isPassedByReference()
        ) {
            return false;
        }

        # validator must
        # - have a typehint of \sndsgd\form\Validator
        # - be optional
        # - have a default value of `null`
        $type = $validator->getType();
        if (
            !$type ||
            (string) $type !== \sndsgd\form\Validator::class ||
            !$type->allowsNull()
        ) {
            return false;
        }

        # return type must be boolean
        $returnType = $reflection->getReturnType();
        if (!$returnType || (string) $returnType !== "bool") {
            return false;
        }

        $this->classname = __CLASS__."\\".md5($reflection);
        return true;
    }
private function verifyHandler ( callable $ func ) : bool { $ reflection = Func :: getReflection ( $ func ) ; $ params = $ reflection -> getParameters ( ) ; if ( count ( $ params ) !== 2 ) { return false ; } list ( $ value , $ validator ) = $ params ; # `$value` must # - have no typehint # - not be optional # - be passed by reference if ( $ value -> getType ( ) !== null || $ value -> isOptional ( ) //!$value->isPassedByReference() ) { return false ; } # validator must # - have a typehint of \sndsgd\form\Validator # - be optional # - have a default value of `null` $ type = $ validator -> getType ( ) ; if ( ! $ type || ( string ) $ type !== \ sndsgd \ form \ Validator :: class || ! $ type -> allowsNull ( ) ) { return false ; } # return type must be boolean $ returnType = $ reflection -> getReturnType ( ) ; if ( ! $ returnType || ( string ) $ returnType !== "bool" ) { return false ; } $ this -> classname = __CLASS__ . "\\" . md5 ( $ reflection ) ; return true ; }
Verify the validate function has the correct signature

@param callable $func
@return bool
Verify the validate function has the correct signature