예제 #1
0
        /// <summary>
        /// Sets variable's type.
        /// </summary>
        /// <param name="ctx">Current runtime context.</param>
        /// <param name="variable">The variable.</param>
        /// <param name="type">The string identifying a new type. See PHP manual for details.</param>
        /// <returns>Whether <paramref name="type"/> is valid type identifier.</returns>
        /// <exception cref="PhpException"><paramref name="type"/> has invalid value.</exception>
        public static bool settype(Context ctx, ref PhpValue variable, string type)
        {
            switch (type.ToLowerInvariant())
            {
            case "bool":
            case "boolean":
                variable = PhpValue.Create(variable.ToBoolean());
                return(true);

            case "int":
            case "integer":
                variable = PhpValue.Create(variable.ToLong());
                return(true);

            case "float":
            case "double":
                variable = PhpValue.Create(variable.ToDouble());
                return(true);

            case "string":
                if (variable.TypeCode != PhpTypeCode.MutableString)        // already a string with possible binary data
                {
                    variable = PhpValue.Create(variable.ToString(ctx));
                }
                return(true);

            case "array":
                variable = PhpValue.Create(variable.ToArray());
                return(true);

            case "object":
                variable = PhpValue.FromClass(variable.ToClass());
                return(true);

            case "null":
                variable = PhpValue.Null;
                return(true);
            }

            PhpException.InvalidArgument(nameof(type), Resources.LibResources.invalid_type_name);
            return(false);
        }
예제 #2
0
        /// <summary>
        /// Sets variable's type.
        /// </summary>
        /// <param name="ctx">Current runtime context.</param>
        /// <param name="variable">The variable.</param>
        /// <param name="type">The string identifying a new type. See PHP manual for details.</param>
        /// <returns>Whether <paramref name="type"/> is valid type identifier.</returns>
        /// <exception cref="PhpException"><paramref name="type"/> has invalid value.</exception>
        public static bool settype(Context ctx, ref PhpValue variable, string type)
        {
            switch (type.ToLowerInvariant())
            {
            case "bool":
            case "boolean":
                variable = PhpValue.Create(variable.ToBoolean());
                return(true);

            case "int":
            case "integer":
                variable = PhpValue.Create(variable.ToLong());
                return(true);

            case "float":
            case "double":
                variable = PhpValue.Create(variable.ToDouble());
                return(true);

            case "string":
                variable = PhpValue.Create(variable.ToString(ctx));
                return(true);

            case "array":
                variable = PhpValue.Create(variable.AsArray());
                return(true);

            case "object":
                variable = PhpValue.FromClass(variable.ToClass());
                return(true);

            case "null":
                variable = PhpValue.Null;
                return(true);
            }

            //PhpException.InvalidArgument("type", LibResources.GetString("invalid_type_name"));
            //return false;
            throw new ArgumentException(nameof(type));
        }