/// <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); }
/// <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)); }