Home >Backend Development >PHP Tutorial >Interface specification issues
The data returned by the interface generally outputs integers and floating point types as strings. Have you processed this type?
How to deal with it? I am currently using the Laravel framework.
My idea is to define the data type in each Model, and then process it uniformly when the Model is output. Is there any good method?
The data returned by the interface generally outputs integers and floating point types as strings. Have you processed this type?
How to deal with it? I am currently using the Laravel framework.
My idea is to define the data type in each Model, and then process it uniformly when the Model is output. Is there any good method?
PHP is a weakly typed language, so this situation is relatively common.
Generally, if you interact with js or other weakly typed languages, there will be no problem.
If you use strongly typed languages such as Ios and Android, there will be some problems
1. Write an api unified processing function and process it uniformly before output. If it is int, use intval to convert it. If it is null, it is null. If it is an empty string, it is "". This needs to be paid attention to in strong types.
2. On the interactive side, Ios, Android, etc., it is best to do type verification, type conversion, and fault tolerance. Don’t let the interface return the wrong type and the program crash.
It’s best to deal with both aspects.
This has nothing to do with the framework. PHP is weakly typed, so the data format when returning JSON is very irregular. My current interface for returning JSON data is manually formatted on the outside
<code>strval(xxx) //格式化为字符串 intval(xxx) //格式化为整形数字 floatval(xxx) //格式化为浮点型数字 boolval(xxx) //格式化为浮点型</code>
Thank you for the invitation. What was said above is very clear. PHP is weakly typed. You can use a separate program to process the data you want to accept or the data returned to your client to ensure the integrity and accuracy of the data. You can define a class or method to process the floating point, integer and other data you mentioned. In short, just ensure the interface security and data correctness
First let me talk about my results.
will not be converted to a string.
Is it true that your data is originally a string?
My php version: 5.5.34
Laravel Framework version: 5.2.22
<code><?php namespace App\Http\Controllers; class PingController extends Controller { public function ping() { $a = [1.1, 2]; return json_encode($a); return 'ping is ok'; } }</code>
By the way, I think the processing should be done uniformly when the controller returns.