pub fn build() {
        assert!(!CLOSURE_META.has_ce(), "Closure class already built.");

        ClassBuilder::new("RustClosure")
            .method(
                FunctionBuilder::new("__invoke", Self::invoke)
                    .not_required()
                    .arg(Arg::new("args", DataType::Mixed).is_variadic())
                    .returns(DataType::Mixed, false, true),
                MethodFlags::Public,
            )
            .object_override::<Self>()
            .registration(|ce| CLOSURE_META.set_ce(ce))
            .register()
            .expect("Failed to build `RustClosure` PHP class.");
    }
Builds the class entry for [`Closure`], registering it with PHP. This
function should only be called once inside your module startup
function.

# Panics

Panics if the function is called more than once.
src/closure.rs