Пример #1
0
        /// <summary>
        ///  Sets value for a parameter.
        /// </summary>
        /// <param name="ns">The namespace URI of the XSLT parameter.</param>
        /// <param name="name">The local name of the XSLT parameter or an array of name =&gt; option pairs.</param>
        /// <param name="value">The new value of the XSLT parameter.</param>
        /// <returns><B>True</B> or <B>false</B>.</returns>
        public bool setParameter(string ns, PhpArray name, string value = null)
        {
            // set all name => value pairs contained in the array
            foreach (var pair in name)
            {
                if (!pair.Key.IsString)
                {
                    PhpException.Throw(PhpError.Warning, Resources.InvalidParameterKey);
                    return(false);
                }

                if (xsltArgumentList.GetParam(pair.Key.String, ns) != null)
                {
                    xsltArgumentList.RemoveParam(pair.Key.String, ns);
                }
                xsltArgumentList.AddParam(pair.Key.String, ns, XsltConvertor.PhpToDotNet(_ctx, pair.Value));
            }

            return(true);
        }
Пример #2
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));
        }
Пример #3
0
 private string InvokeFunctionString(string name, params object[] args)
 {
     return(XsltConvertor.PhpToString(_ctx, InvokeFunctionCore(name, args)));
 }
Пример #4
0
 private object InvokeFunction(string name, params object[] args)
 {
     return(XsltConvertor.PhpToDotNet(_ctx, InvokeFunctionCore(name, args)));
 }