public static bool is_indexed_array(Context ctx, PhpArray arr) { PhpCallback callback = PhpCallback.Create("is_string", default(RuntimeTypeHandle)); PhpArray keys = Arrays.array_keys(arr); return(Arrays.array_filter(ctx, keys, callback).Count == 0); }
public static bool is_mixed_array(Context ctx, PhpArray arr) { PhpCallback callback = PhpCallback.Create("is_string", default(RuntimeTypeHandle)); PhpArray keys = Arrays.array_keys(arr); int count = Arrays.array_filter(ctx, keys, callback).Count; return(count != 0 && count != arr.Count); }
public static bool is_assoc_array(Context ctx, PhpArray arr) { PhpCallback callback = PhpCallback.Create("is_string", default(RuntimeTypeHandle)); PhpArray keys = Arrays.array_keys(arr); // mixed array is one kind of assoc array // return Arrays.array_filter(ctx, keys, callback).Count == arr.Count; return(Arrays.array_filter(ctx, keys, callback).Count != 0); }
/// <summary> /// Convert value into <see cref="IPhpCallable"/> allowing method names declared on <see cref="HandlerObject"/>. /// </summary> internal IPhpCallable ToCallback(PhpValue value) { // empty variable if (value.IsEmpty) { return(null); } // method name given as string: if (this.HandlerObject != null) { var name = value.ToStringOrNull(); if (name != null) { return(PhpCallback.Create(this.HandlerObject, name, default(RuntimeTypeHandle))); } } // default PHP callback: return(value.AsCallable(default(RuntimeTypeHandle))); }
private PhpValue InvokeFunctionCore(string name, params object[] args) { // check whether this function is allowed to be called PhpCallback callback; if (allFunctionsRegistered) { registeredFunctions.TryGetValue(name, out callback); } else { if (registeredFunctions.TryGetValue(name, out callback)) { PhpException.Throw(PhpError.Warning, String.Format(Resources.HandlerNotAllowed, name)); return(PhpValue.Null); } } // if the callback does not already exist, create it if (callback == null) { callback = PhpCallback.Create(name, default(RuntimeTypeHandle)); registeredFunctions[name] = callback; } // convert arguments var phpArgs = new PhpValue[args.Length]; for (int i = 0; i < args.Length; i++) { phpArgs[i] = XsltConvertor.DotNetToPhp(args[i]); } // invoke! return(callback.Invoke(_ctx, phpArgs)); }