Beispiel #1
0
        public static PhpArray GetClassMethods(DTypeDesc caller, object classNameOrObject)
        {
            ScriptContext context = ScriptContext.CurrentContext;
            DTypeDesc     type    = ClassNameOrObjectToType(context, null, caller, classNameOrObject, true);

            if (type == null)
            {
                return(null);
            }

            // determine the calling type
            //DTypeDesc caller = PhpStackTrace.GetClassContext();
            if (caller != null && caller.IsUnknown)
            {
                caller = PhpStackTrace.GetClassContext();
            }

            PhpArray result = new PhpArray();

            foreach (KeyValuePair <Name, DRoutineDesc> pair in type.EnumerateMethods(caller))
            {
                result.Add(pair.Key.ToString());
            }

            return(result);
        }
Beispiel #2
0
        public virtual object getMethods(ScriptContext /*!*/ context, object filter = null)
        {
            if (typedesc == null)
            {
                return(false);
            }

            if (filter != null && filter != Arg.Default)
            {
                PhpException.ArgumentValueNotSupported("filter", filter);
            }

            PhpArray result = new PhpArray();

            foreach (KeyValuePair <Name, DRoutineDesc> method in typedesc.EnumerateMethods())
            {
                result.Add(new ReflectionMethod(context, true)
                {
                    dtype  = method.Value.DeclaringType,
                    method = method.Value,
                });
            }
            return(result);
        }