[英]How to convert a json encoded php variable to a JavaScript JSON object in the same file
[英]How do you send a JSON encoded object to a PHP function that takes a PHP class object as a variable?
我有一個Java aplet,它將JSON編碼的對象發送到Zend Framework JSON Server。
我的問題是代碼是這樣設置的:
ServerController:
public function jsonAction()
{
$server = new Zend_Json_Server();
$Server->setClass('Application_Model_ClassObject', 'co');
if('GET' == $_SERVER['REQUEST_METHOD'])
{
$server->setTarget('...')
->setEnvelope(Zend_Json_Server_Smd::ENV_JSONRPC_2);
$smd = $server->getServiceMap();
header('Content-Type: application/json');
echo $smd;
return
}
echo $server->handle();
}
ClassObject函數:
/**
* DoSomethign description
* @param ClassObject
*/
public function doSomething(Application_Model_ClassObject $obj)
{
$someVariable = $obj->getSomeValue();
...
}
我從服務器收到錯誤響應,說obj
必須是ClassObject
的實例
好的,這就是我們最終要做的(快速而又骯臟的版本)...盡管我相信有更好的方法。
以下是一些詳細信息:
/**
* DoSomethign description
* @param ClassObject
*/
public function doSomething($data)
{
$obj = new Application_Model_ClassObject();
$obj->populate($data);
$someVariable = $obj->getSomeValue();
...
}
/**
*
* Application_Model_ClassObject class
*/
class Application_Model_ClassObject
{
...
public function populate($row)
{
if (is_array($row)) {
$row = new ArrayObject($row, ArrayObject::ARRAY_AS_PROPS);
}
if (isset ($row->SomeValue)) {
$this->setSomeValue($row->SomeValue);
}
return $this;
}
}
如果刪除類型提示“ ClassObject”,則doSomething方法將接受任何傳入的數據。然后由doSomething方法來解碼json字符串,並對其進行一些有用的處理。
公共函數doSomething(ClassObject obj){...}
嗯,通常您不會編寫那樣的PHP函數,因為它不是強類型的。 通常,它看起來像這樣:
公共函數doSomething($ obj){...}
似乎您已嘗試編寫混合了某些Java語法的PHP函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.