I struggled with the issue of webservice for a long time some time ago. I originally wanted to write it in the thinkphp framework, but It can't be realized no matter what. So far, I have only learned the development of interfaces without a framework.
Share the steps in this resource:
First the files I created are:
api.php api interface class file
api.wsdl The interface file I created to be called last
cometrue.php is the execution file that registers all content of the service api class
creat_wsdl.php creates the execution method file of wsdl file
SoapDiscovery.class.php soap class file that must be called (can be queried and downloaded online)
Step one: Create a service folder specifically to store your api interface project
Step 2: Download the SoapDiscovery.class.php class file and place it in your service folder
Step 3: Create your own api interface class file api.php under the service folder. An example of the file content is as follows:
Copy code The code is as follows:
class api{
//My test interface method
Public function test(){
return "hello world";
}
}
?>
Okay, after we finish writing our interface, we start to generate the wsdl file about this interface
Part 4: Write an execution program that generates wsdl files. Here I will create a new file creat_wsdl.php, which is also placed under the directory of the same level as service. The content is as follows:
Copy code The code is as follows:
include("api.php");
include("SoapDiscovery.class.php");
$disc = new SoapDiscovery('api','service');//api class file name, service interface directory
$disc->getWSDL();
?>
Step 5: Execute the creat_wsdl.php file
Then, there is an api.wsdl file under the service folder, as shown in the figure below:
It’s not over yet~
Step 6: Register all methods in the api class file. Create a new executable file of the registration class file under the service folder and name it: cometrue.php. The file content is as follows:
Copy code The code is as follows:
$server = new SoapServer('api.wsdl', array('soap_version' => SOAP_1_2)); ##The Service.wsdl file here is generated above
$server->setClass("api"); //Register all methods of the Service class
$server->handle();
?>
After the construction is completed, execute the file. At this time, all the contents in the class file have been registered. Let’s test this interface
Step 7: At the bottom of the api class file api.php, add the calling program, and then add the api.php file content as follows:
Copy code The code is as follows:
class api{
//My test interface method
Public function test($a){
return $a;
}
}
$server = new SoapServer('api.wsdl', array('soap_version' => SOAP_1_2)); ##The Service.wsdl file here is generated above
$server->setClass("api"); //Register all methods of the Service class
$server->handle();
?>
Step 7: Test, create a test file in a random location outside the service (as long as it can be accessed) and name it: test.php. The content of the file is as follows:
Copy code The code is as follows:
$x = new SoapClient("http://rbac.local/service/api.php?wsdl"); //Replace the link here with your own access link
echo $x->test('ok');
?>