更新: Restler2.1.5で修正されました
@class
これは、以下に示すように、特定の形式のコメントを期待するため、DocParserによって引き起こされるRestler2.1.4に存在するバグです。
/**
* @class ClassName(property=value&property2=value2)
*/
初期化後に別のクラスのプロパティを設定するために使用されます。たとえば、これを使用して、ルート名を設定したり、属性として変換するものを定義したりするようにXmlFormatに指示できます。既知のBMIの例を見て、以下に示すようにPHPDocコメントを追加します。
<?php
class BMI {
/**
* @class XmlFormat(root_name=self&attribute_names=height,weight)
*/
function index($height=162.6, $weight=84) {
$result = new stdClass();
$cm = $height;
$kg = $weight;
$meter = $cm / 100;
$inches = $meter * 39.3700787;
$feet = round($inches/12);
$inches = $inches % 12;
$result->bmi = round($kg/($meter*$meter),2);
$lb = round($kg/0.45359237,2);
if($result->bmi<18.5){
$result->message = 'Underweight';
}elseif ($result->bmi<=24.9){
$result->message = 'Normal weight';
}elseif ($result->bmi<=29.9){
$result->message = 'Overweight';
}else{
$result->message = 'Obesity';
}
$result->metric = array('height'=>"$cm centimeter", 'weight'=>"$weight kilograms");
$result->imperial = array('height'=>"$feet feet $inches inches", 'weight'=>"$lb pounds");
return $result;
}
}
次のXMLを返します
<?xml version="1.0"?>
<self>
<bmi>31.77</bmi>
<message>Obesity</message>
<metric height="162.6 centimeter" weight="84 kilograms"/>
<imperial height="5 feet 4 inches" weight="185.19 pounds"/>
</self>
そうでなければどちらになります
<?xml version="1.0"?>
<response>
<bmi>31.77</bmi>
<message>Obesity</message>
<metric>
<height>162.6 centimeter</height>
<weight>84 kilograms</weight>
</metric>
<imperial>
<height>5 feet 4 inches</height>
<weight>185.19 pounds</weight>
</imperial>
</response>
その他のユースケースと説明はここにあります
@class
が予期しない形式で定義されている場合でも、エラーはスローされません。次のリリースで修正する予定です。