新工作第三周,做了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 '<br>';
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);
echo $result->GetDataResult;
echo '<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