新工作第三週,做了3年多的.Net,突然急轉彎做PHP,漂移過彎,速度180邁
由於資料的整合,在專案中不得不使用PHP呼叫WCF
一頭的霧水,網上相關的資料少又少,在phpChina發個帖子,還沒有人回,看來博客園才是永遠的家
感謝dudu大神的不厭其煩的回覆幫助,Thanks
==========以下是正文===============
使用PHP呼叫WCF非常簡單,所有的過程,只需要兩個字,仔細
一、準備工作:
1.soap.dll
查看PHP安裝包裡面的ext 是否有 php_soap.dll [PHP自動整合的,一般情況下都會存在,不存在可以在網上下載]
2.修改php.ini檔案
第一步確認後,繼續找到PHP的設定檔。由於每個人的環境不同,例如有的是使用整合開發環境,一鍵安裝
有的同學是自己分別安裝,可能php.ini的位置會不同。此時的做法是使用 phpinfo()進行檢視
找到文件後,打開文件,
查找到
;extension=php_soap.dll
這一行,然後將前面的分號去掉。
如果沒有找到這一行,不用擔心,自己手動添加這一行也可以.
3.重啟apach
二、呼叫WCF
以上123步驟完成後,我們的準備工作就完成了,接下來就是寫程式碼
假設大家都會WCF,都有PHP的基礎
1.發布一個WCF以備調用
下面是WCF的兩個方法
public string SayHello()
{
return "Hello World";
}
public string GetData(string value)
{
return "You entered is : " + value;
}
2.PHP端呼叫
$wcfURL = 'http://192.168.3.102/Service1.svc?wsdl';//【這是WCF的位址】
$wcfClient = new SoapClient ( $wcfURL );
$result1 = $wcfClient->SayHello ();
print_r ( $result1 );
echo '
';
echo $result1->SayHelloResult;//這裡是SayHello+Result合在一起寫,具體原因我不知道
以上PHP程式碼正常情況下應該輸出如下
stdClass Object ( [SayHelloResult] => Hello World )
Hello World
第一個方法就呼叫成功了
我們繼續呼叫有參數的方法
這個時候一定要用WCF測試客戶端來測試WCF
看到我一開始的WCF的方法,參數是 GetData(string value),而這裡顯示t,這是因為在WCF是同事幫我寫的,他偷懶,直接在定義的時候寫的 GetData(string t )。為了這個偷懶,付出了沉重的程式碼,整整10分鐘!
詳情連結:http://q.cnblogs.com/q/71331/
以下是修改後的PHP程式碼
$args = array('t' => '312'); $wcfClient->GetData($args);<br>echo $result->GetDataResult;<br>echo '<br>';<br>print_r ( $result );
以上正常輸出應該是
You entered is :312
stdClass Object ( [GetDataResult] => You entered is : 312)
以上就完成了PHP對WCF的呼叫了,當然,有些小夥伴會問高級一點的呢,比如整個類什麼的作為參數,返回個類什麼的............. ....弱弱的說,還沒玩到那麼高級的..
再次謝謝dudu
以下為參考文章:http://blog.csdn.net/love__coder/article/details/6067611
http://www.cnblogs.com/tianbang/archive/2012/05/07/2489149.html
以上就介紹了PHP呼叫WCF小結,包含了面向的內容,希望對PHP教學有興趣的朋友有幫助。