Example #1
0
 /// <summary>
 /// Specifies dynamic behavior for invoke operation for global function
 /// </summary>
 public bool TryInvokeMember(
     string memberName,
     Object[] args,
     out Object result
     )
 {
     result = PhpVariable.Unwrap(PhpVariable.Dereference(Context.Call(memberName, null, null, wrapArgs(args))));
     return(true);
 }
Example #2
0
 /// <summary>
 /// Specifies dynamic behavior for invoke operation for static method
 /// </summary>
 public override bool TryInvokeMember(
     InvokeMemberBinder binder,
     Object[] args,
     out Object result
     )
 {
     Context.Stack.AddFrame(wrapArgs(args));
     result = PhpVariable.Unwrap(PhpVariable.Dereference(Operators.InvokeStaticMethod(type, binder.Name, null, null, Context)));
     return(true);
 }
Example #3
0
        /// <summary>
        /// Specifies dynamic behavior for get operation for static variable
        /// </summary>
        public override bool TryGetMember(
            GetMemberBinder binder,
            out Object result
            )
        {
            if (binder.Name == ConstID)
            {
                result = new ConstsScope(Context, type);
                return(true);
            }

            result = PhpVariable.Unwrap(PhpVariable.Dereference(Operators.GetStaticProperty(type, binder.Name, null, Context, false)));
            return(true);
        }
Example #4
0
        /// <summary>
        /// Specifies dynamic behavior for get operation for global variable
        /// </summary>
        public override bool TryGetMember(
            GetMemberBinder binder,
            out Object result
            )
        {
            switch (binder.Name)
            {
            case ClassID:
                result = Classes;
                return(true);

            case ConstID:
                result = Consts;
                return(true);

            case NamespaceID:
                result = Namespaces;
                return(true);
            }

            result = PhpVariable.Unwrap(Operators.GetVariable(Context, null, binder.Name));
            return(true);
        }