示例#1
0
    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);
    }
示例#2
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);
    }
示例#3
0
    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);
    }
示例#4
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)));
            }
示例#5
0
        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));
        }