Lors du développement d'applications Web basées sur PHP, il est souvent nécessaire de traiter les données saisies par les utilisateurs. Ces données peuvent provenir de soumissions de formulaires, de paramètres d'URL, de cookies, etc. Étant donné que le contenu entré par les utilisateurs est généralement passé dans les chaînes, nous devrons peut-être les convertir en autres types de données (tels que les entiers, les nombres flottants, les valeurs booléennes, etc.) dans le programme selon différents besoins commerciaux. À l'heure actuelle, la fonction SetType () de PHP fournit un moyen simple d'effectuer la conversion de type.
La fonction setType () est utilisée pour modifier le type d'une variable, et il modifiera directement la valeur de la variable elle-même. Contrairement à la coulée de type, SetType () modifie le type réel de la variable et renvoie une valeur booléenne indiquant si le type coulant est réussi.
<span><span><span class="hljs-keyword">bool</span></span><span> </span><span><span class="hljs-title function_ invoke__">settype</span></span><span>(</span><span><span class="hljs-keyword">mixed</span></span><span> &</span><span><span class="hljs-variable">$var</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$type</span></span><span>);
</span></span>
$ var : la variable de type à convertir (la référence est passée).
$ Type : Le type cible doit être l'un des éléments suivants: "Boolean" , "Integer" , "Double" , "String" , "Array" , "Object" .
La fonction SettingType () renvoie une valeur booléenne:
Vrai : indique que la conversion de type réussit.
Faux : indique que la conversion de type échoue, généralement lorsqu'une certaine valeur ne peut pas être convertie en type cible.
Les données entrées par l'utilisateur peuvent être une chaîne sous forme de nombre, que nous devons convertir en un nombre ou un numéro flottant lors de l'exécution d'opérations mathématiques. Par exemple, l'utilisateur entre un nombre comme le prix du formulaire, et nous devons le convertir en un entier pour le calcul.
<span><span><span class="hljs-variable">$user_input</span></span><span> = </span><span><span class="hljs-string">"150.75"</span></span><span>; </span><span><span class="hljs-comment">// Chaîne d'entrée utilisateur</span></span><span>
</span><span><span class="hljs-title function_ invoke__">settype</span></span><span>(</span><span><span class="hljs-variable">$user_input</span></span><span>, </span><span><span class="hljs-string">"double"</span></span><span>); </span><span><span class="hljs-comment">// Convertir la chaîne en numéro flottant</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$user_input</span></span><span>; </span><span><span class="hljs-comment">// Sortir: 150.75</span></span><span>
</span></span>
Lors du traitement des données du formulaire soumis par un utilisateur, en particulier dans une case à cocher ou une case radio, l'utilisateur peut soumettre des valeurs comme "ON" ou "1" en tant que chaîne, et nous devons la convertir en valeur booléenne.
<span><span><span class="hljs-variable">$user_input</span></span><span> = </span><span><span class="hljs-string">"on"</span></span><span>; </span><span><span class="hljs-comment">// Valeur de cocher la valeur saisie par l'utilisateur</span></span><span>
</span><span><span class="hljs-title function_ invoke__">settype</span></span><span>(</span><span><span class="hljs-variable">$user_input</span></span><span>, </span><span><span class="hljs-string">"boolean"</span></span><span>); </span><span><span class="hljs-comment">// Convertir en booléen</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$user_input</span></span><span>; </span><span><span class="hljs-comment">// Sortir: 1 (true)</span></span><span>
</span></span>
Dans certains cas, les données entrées par l'utilisateur sont une chaîne passées dans un format spécifique (comme les valeurs séparées par des virgules) et nous devons le convertir en un type de tableau pour un traitement ultérieur.
<span><span><span class="hljs-variable">$user_input</span></span><span> = </span><span><span class="hljs-string">"apple,orange,banana"</span></span><span>; </span><span><span class="hljs-comment">// Chaîne de fruits d'entrée de l'utilisateur</span></span><span>
</span><span><span class="hljs-title function_ invoke__">settype</span></span><span>(</span><span><span class="hljs-variable">$user_input</span></span><span>, </span><span><span class="hljs-string">"array"</span></span><span>); </span><span><span class="hljs-comment">// Convertir les chaînes en tableaux</span></span><span>
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$user_input</span></span><span>); </span><span><span class="hljs-comment">// Sortir: Array ( [0] => apple [1] => orange [2] => banana )</span></span><span>
</span></span>
Dans certaines applications orientées objet, il peut être nécessaire de convertir des objets en tableaux pour faciliter le transfert ou le traitement des données d'attribut d'objet. Cette tâche peut également être accomplie à l'aide de setType () .
<span><span><span class="hljs-class"><span class="hljs-keyword">class</span></span></span><span> </span><span><span class="hljs-title">User</span></span><span> {
</span><span><span class="hljs-keyword">public</span></span><span> </span><span><span class="hljs-variable">$name</span></span><span>;
</span><span><span class="hljs-keyword">public</span></span><span> </span><span><span class="hljs-variable">$age</span></span><span>;
}
</span><span><span class="hljs-variable">$user</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">User</span></span><span>();
</span><span><span class="hljs-variable">$user</span></span><span>->name = </span><span><span class="hljs-string">"John"</span></span><span>;
</span><span><span class="hljs-variable">$user</span></span><span>->age = </span><span><span class="hljs-number">30</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">settype</span></span><span>(</span><span><span class="hljs-variable">$user</span></span><span>, </span><span><span class="hljs-string">"array"</span></span><span>); </span><span><span class="hljs-comment">// Convertir les objets en tableaux</span></span><span>
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$user</span></span><span>); </span><span><span class="hljs-comment">// Sortir: Array ( [name] => John [age] => 30 )</span></span><span>
</span></span>
Bien que la fonction setType () fournit une conversion de type, elle est quelque peu différente de la coulée (telle que (int) $ var ). SetType () doit modifier directement la variable elle-même et renvoyer la valeur booléenne de la réussite de la conversion, tandis que le casting ne modifiera pas le type de la variable d'origine. Les cas sont généralement utilisés pour le code plus propre, tandis que SetType () convient aux scénarios où il est nécessaire de déterminer clairement si une conversion de type réussit.
La fonction SettingType () modifie la variable d'origine, donc la référence est transmise. Si vous ne souhaitez pas modifier la variable d'origine, vous pouvez le copier dans une nouvelle variable avant la conversion de type.
Si la conversion de type cible échoue, SetType () ne lance pas d'erreur, mais renvoie faux , il est donc préférable de vérifier la valeur de retour lorsqu'elle est utilisée.
Lors du traitement des données d'entrée de l'utilisateur, la fonction setType () est un outil puissant qui peut aider les développeurs à convertir facilement les types de données. Il convient aux scénarios de divers types de conversion, en particulier lors du traitement des données du formulaire et des entrées externes. En utilisant SetType () , les développeurs peuvent s'assurer que les types de données corrects sont utilisés dans différentes logiques métier, évitant ainsi des erreurs potentielles ou des incohérences. Lorsque vous l'utilisez, nous devons également juger si la conversion de type réussit en fonction de la situation réelle, afin de traiter davantage les données.