หลายองค์กรได้นำ Apache และ PHP เป็นสภาพแวดล้อมเว็บแอปพลิเคชันของตน การใช้ PHP ในโหมดบริการเว็บอาจดูเป็นเรื่องยาก แต่ในความเป็นจริงแล้ว ด้วย NuSoap คุณสามารถใช้ PHP เพื่อสร้างไคลเอ็นต์และเซิร์ฟเวอร์ SOAP ได้อย่างง่ายดาย
เพื่อสาธิตวิธีใช้ NuSoap และ PHP เพื่อสร้างบริการบนเว็บ เราจะยกตัวอย่างง่ายๆ แอปพลิเคชันตัวอย่างนี้ประกอบด้วยเซิร์ฟเวอร์และไคลเอนต์บริการเว็บ PHP โดยจะใช้สองฟังก์ชัน: การกลับลำดับอักขระในสตริงและการค้นหาผลรวมของตัวเลขสองตัว
PHP SOAP Server การตั้งค่าเซิร์ฟเวอร์ SOAP นั้นง่ายมากด้วย PHP และ NuSoap โดยพื้นฐานแล้ว คุณเพียงแค่เขียนฟังก์ชันที่คุณต้องการเปิดเผยกับบริการบนเว็บของคุณ และลงทะเบียนฟังก์ชันเหล่านั้นกับ NuSoap
ตกลง มีสองขั้นตอนที่จำเป็นในการสร้างเซิร์ฟเวอร์ PHP SOAP ให้เสร็จสมบูรณ์ ขั้นแรก คุณต้องสร้างอินสแตนซ์ของออบเจ็กต์ NuSoap ในโค้ด PHP ของคุณ จากนั้นใช้วิธี HTTP POST เพื่อส่งข้อมูลดิบไปยัง NuSoap เพื่อประมวลผล ฟังดูง่ายเหรอ? มาดูรายการที่ 1 กันก่อน
รายการ 1: soapfunc.php
<?
need_once('nusoap.php');
ฟังก์ชั่นย้อนกลับ($str){
$retval = "";
ถ้า(strlen($str) < 1) {
กลับใหม่ soap_fault('ลูกค้า','','สตริงไม่ถูกต้อง');
-
สำหรับ ($i = 1; $i <= strlen($str); $i++) {
$retval .= $str[(strlen($str) - $i)];
-
ส่งคืน $retval;
}
ฟังก์ชัน add2numbers($num1, $num2) {
ถ้า (ตัดแต่ง($num1) != intval($num1)) {
return new soap_fault('Client', '', 'The first number is invalid');
-
ถ้า (ตัดแต่ง($num2) != intval($num2)) {
return new soap_fault('Client', '', 'หมายเลขที่สองไม่ถูกต้อง');
-
กลับ ($num1 + $num2);
-
?>
รายการ 1 ให้ไฟล์ต้นฉบับของ soapfunc.php ไฟล์นี้มีสองฟังก์ชันที่เราต้องการเปิดเผยต่อบริการบนเว็บผ่านโปรโตคอล SOAP: Reverse และ add2numbers ซึ่งเป็นแกนหลักของแอปพลิเคชันบริการบนเว็บของเรา ฟังก์ชันย้อนกลับรับหนึ่งอาร์กิวเมนต์ กลับลำดับของอักขระในสตริง และส่งกลับ
รายการ 2: soapserver.php
<?
need_once('nusoap.php');
รวม('soapfunc.php');
$soap = soap_server ใหม่;
$soap->register('ย้อนกลับ');
$soap->register('add2numbers');
$สบู่->บริการ($HTTP_RAW_POST_DATA);
?>
รายการ 2 แสดงให้เห็นถึงการใช้ฟังก์ชันการลงทะเบียน NuSoap และการเรียกตัวจัดการ SOAP อย่างที่คุณเห็น การลงทะเบียนทั้งสองฟังก์ชันของคุณ (ใน soapfunc.php) และส่งข้อมูล POST ไปยังอ็อบเจ็กต์ soap_server นั้นง่ายดายเหมือนกับการสร้างอินสแตนซ์ใหม่ของอ็อบเจ็กต์ soap_server อ็อบเจ็กต์ soap_server จะตรวจสอบข้อมูล POST และกำหนดฟังก์ชันที่จะเรียกใช้ จากนั้นส่งพารามิเตอร์ไปยังฟังก์ชัน PHP นี้ ข้อมูลที่ส่งคืนจากฟังก์ชัน PHP จะถูกบรรจุใหม่เป็นการตอบกลับ SOAP และส่งไปยังไคลเอ็นต์ SOAP ที่ร้องขอบริการ
PHP SOAP Client ตอนนี้เราได้สร้างเซิร์ฟเวอร์ SOAP โดยใช้ NuSoap และ PHP แล้ว เราจำเป็นต้องทดสอบมัน เช่นเดียวกับที่เราสร้างโปรแกรมเซิร์ฟเวอร์ SOAP เราสามารถใช้ NuSoap เพื่อสร้างโปรแกรมไคลเอ็นต์ SOAP ใน PHP ได้ รายการ 3 เป็นโปรแกรมซอร์สของโปรแกรมไคลเอนต์ PHP SOAP
ตอนนี้เราได้สร้างเซิร์ฟเวอร์ SOAP โดยใช้ NuSoap และ PHP แล้ว เราจำเป็นต้องทดสอบมัน เช่นเดียวกับที่เราสร้างโปรแกรมเซิร์ฟเวอร์ SOAP เราสามารถใช้ NuSoap เพื่อสร้างโปรแกรมไคลเอ็นต์ SOAP ใน PHP ได้ รายการ 3 เป็นโปรแกรมซอร์สของโปรแกรมไคลเอนต์ PHP SOAP
รายการ 3: soapclient.php
<?
รวม('nusoap.php');
$client = new soapclient('http://localhost/soapserver.php');
$str = "สตริงนี้จะถูกกลับรายการ";
$params1 = array('str'=>$str);
$reversed = $client->call('reverse',$params1);
echo "ถ้าคุณย้อนกลับ '$str' คุณจะได้รับ '$reversed'<br>n"
;
$n2 = 14;
$params2 = array('num1'=>$n1, 'num2'=>$n2);
$added = $client->call('add2numbers', $params2);
echo "ถ้าคุณเพิ่ม $n1 และ $n2 คุณจะได้รับ $added<br>n";
?>
ในการใช้โปรแกรมไคลเอนต์ PHP บนเซิร์ฟเวอร์ SOAP คุณต้องทำสามสิ่ง ขั้นแรก คุณต้องสร้างออบเจ็กต์ไคลเอ็นต์สบู่ อ็อบเจ็กต์ Soapclient มีหน้าที่จัดการการจัดเรียงพารามิเตอร์และโปรโตคอล SOAP Soapclient ต้องการพารามิเตอร์ซึ่งต้องเป็น URL URL นี้สามารถชี้ไปยังจุดสิ้นสุด HTTP หรือคำอธิบาย WSDL ของเซิร์ฟเวอร์ SOAP จริง ในกรณีของเรา มันคือ URL ที่ชี้ไปยังเซิร์ฟเวอร์ PHP SOAP ของเรา
เมื่อเรียกใช้ฟังก์ชันที่ต้องใช้พารามิเตอร์ คุณต้องสร้างอาร์เรย์พารามิเตอร์ก่อนซึ่งมีชุดคู่คีย์-ค่า คีย์คือชื่อของพารามิเตอร์ และค่าคือค่าของพารามิเตอร์
เมื่อคุณต้องการเรียกใช้ฟังก์ชัน คุณใช้วัตถุ Soapclient เพื่อเรียกฟังก์ชันและส่งผ่านพารามิเตอร์สองตัว พารามิเตอร์ตัวแรกคือชื่อของฟังก์ชันที่คุณต้องการเรียกใช้ และพารามิเตอร์ตัวที่สองคืออาร์เรย์ที่มีพารามิเตอร์ของฟังก์ชัน SOAP ฟังก์ชันการโทรจะส่งคืนค่าของฟังก์ชัน SOAP ที่คุณเรียกใช้
หากต้องการเรียกใช้ตัวอย่างนี้ เพียงป้อน URL ไปที่ soapclient.php บนเว็บเบราว์เซอร์ของคุณ คุณจะมีผลลัพธ์คล้ายกับ:
หากคุณย้อนกลับ 'สตริงนี้จะถูกย้อนกลับ' คุณจะได้รับ 'desrever eb lliw gnirts sihT' หากคุณเพิ่ม 5 และ 14 คุณจะได้ 19