また、あなたのクラスがより明確にすることができます(henqさんのコメントに基づいて)
class Category {
public $categoryId = 0, $categoryName = '', $iconUri = '';
}
class Resp {
public $categoryListResp = null;
public function __construct() {
$this->categoryListResp = new CategoryListResp();
}
}
class CategoryListResp {
public $category = array();
}
$resp = new Resp();
$resp->categoryListResp->category[0]->categoryId = 1;
$resp->categoryListResp->category[0]->categoryName = "Spel";
$resp->categoryListResp->category[0]->iconUri = "PictoSpel.png";
// etc.
追加しました。クラス概念を完全に利用するには、クラスにいくつかのメソッドを追加する必要があります。次に、配列には->
を使用しませんが、それぞれのメソッドを呼び出します。例えば。
class Category {
public $categoryId = 0, $categoryName = '', $iconUri = '';
public function __construct($id, $name, $icon) {
$this->categoryId = $id;
$this->categoryName = $name;
$this->iconUri = $icon;
}
}
class Resp {
public $categoryListResp = null;
public function __construct() {
$this->categoryListResp = new CategoryListResp();
}
public function addCategory($index, $id, $name, $icon) {
$this->categoryListResp->addCategory($index, $id, $name, $icon);
}
}
class CategoryListResp {
public $category = array();
public function addCategory($index, $id, $name, $icon) {
$this->category[$index] = new Category($id, $name, $icon);
}
}
$resp = new Resp();
$resp->addCategory(0, 1, "Spel", "PictoSpel.png");
$resp->addCategory(1, 2, "Transport", "PictoTransport.png");
// etc
このコンセプトは、必要に応じて変更できます。
$resp = array(
'CategoryListResp' => array(
'category' => array(
array(
'categoryId' => 1,
'categoryName' => 'Spel',
'iconUri' => 'PictoSpel.png'
),
array(
'categoryId' => 2,
'categoryName' => 'Transport',
'iconUri' => 'PictoTransport.png'
),
),
),
);
print json_encode($resp);
クリーンでシンプル:
はい、配列を使用します。** much ** simpler ...オブジェクトを使用する場合は、まず空のオブジェクトを '$ resp-> CategoryListResp'に代入する必要があります。 $ resp'など... –
問題が発生していますか?そのコードはそのまま動作するはずです。 – webbiedave
コードは正常に動作しますが、より明示的なクラスを作成する方法を知りたいと思います。上のjsonは単純な の 'print json_encode($ resp); 'で出力されます。 –