اعتمدت العديد من المؤسسات Apach و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
<?
require_once('nusoap.php');
الدالة العكسية($str){
$retval = "";
إذا (سترلين($str) < 1) {
إرجاع Soap_fault الجديد('Client','','Invalid string');
}
لـ ($i = 1; $i <= strlen($str); $i++) {
$retval .= $str[(strlen($str) - $i)];
}
إرجاع $retval؛
}
وظيفة add2numbers($num1, $num2) {
إذا (تريم($num1) != intval($num1)) {
return new Soap_fault('Client', '', 'الرقم الأول غير صالح');
}
إذا (تريم($num2) != intval($num2)) {
return new Soap_fault('Client', '', 'الرقم الثاني غير صالح');
}
العودة ($num1 + $num2)؛
}
?>
القائمة 1 تعطي الملف المصدر لـ Soapfunc.php. يحتوي هذا الملف على وظيفتين نريد الكشف عنهما لخدمات الويب من خلال بروتوكول SOAP: العكسي وadd2numbers، وهما جوهر تطبيق خدمات الويب الخاص بنا. تأخذ الدالة العكسية وسيطة واحدة، وتعكس ترتيب الأحرف في السلسلة، وترجعها.
القائمة 2: Soapserver.php
<?
require_once('nusoap.php');
include('soapfunc.php');
$soap = new Soap_server;
$soap->register('reverse');
$soap->register('add2numbers');
$soap->service($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
<?
include('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. كائن 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