Sometimes i have to create lots of api models, so I created this script
This one generates the model
<?php $json = '{ "provider": "OMNIVA", "type": "POST_OFFICE", "name": "Abja-Paluoja postkontor", "city": "Abja vald", "country": "ESTONIA", "availability": "E,T,K,R 8:30-13:00 ja 13:30-16:00;N 8:30-13:00 ja 13:30-18:00;L,P suletud", "destination_id": 69400, "street_address": "P\u00e4rnu maantee 8", "postal_code": "69400", "coordinate_x": "58.1264356146443", "coordinate_y": "25.3548298784361", "temp_service_hours": null, "temp_service_hours_until": null, "temp_service_hours_2": "25.03.2016 suletud", "temp_service_hours_2_until": "25.03.2016", "comment_et": null, "comment_en": null, "comment_ru": null, "comment_fi": null, "comment_lv": null, "comment_lt": null }'; $name = 'Location'; $vendor = 'Makecommerce'; $module = 'Omniva'; if ($_SERVER['REQUEST_METHOD'] === 'POST') { $json = $_POST['json']; $name = $_POST['name']; $vendor = $_POST['vendor']; $module = $_POST['module']; $base = " namespace $vendor\\$module\\Model use Magento\\Framework\\Model\\AbstractExtensibleModel; use $vendor\\$module\\Api\\Data\\{$name}Interface; class {$name} extends AbstractExtensibleModel implements {$name}Interface {"; $json = json_decode($json, true); $base .= ' '; foreach ($json as $key => $value) { $value = strtoupper(preg_replace('|([a-z])([A-Z])|', '$1_$2', $key)); // $base .= 'const '; // $base .= $value; // $base .= " = '".$key."';"; // $base .=' // '; $json[$key] = $value; } // $base .= ' // /**#@-*/ // '; foreach ($json as $key => $value) { $base .= ' /** * {@inheritdoc} */ public function get'; $base .= ucfirst(preg_replace_callback("/_([a-z])?/", function($match){ return strtoupper($match[1]); },$key)); $base .='() { $this->getData(self::'.$value.'); } '; } foreach ($json as $key => $value) { $converted = preg_replace_callback("/_([a-z])?/", function($match){ return strtoupper($match[1]); },$key); $base .= ' /** * {@inheritdoc} */ public function set'; $base .= ucfirst($converted); $base .='( $'.$converted.' ) { $this->setData(self::'.$value.', '. $converted.'); } '; } $base .= ' }'; echo "<pre>"; echo $base; die; }?> <form method="POST"> <label for="json">Json</label> <textarea id="json" name="json"></textarea><br> <label for="name">Name(before Interface) $name.Interface</label> <input type="text" name="name" id="name"><br> <label for="vendor">Vendor $vendor\$module\Api\Data</label> <input type="text" name="vendor" id="vendor"><br> <label for="module">Module $vendor\$module\Api\Data</label> <input type="module" name="module" id="module"><br> <input type="submit"> </form>
And this one generates the Interface
<?php $json = '{ "provider": "OMNIVA", "type": "POST_OFFICE", "name": "Abja-Paluoja postkontor", "city": "Abja vald", "country": "ESTONIA", "availability": "E,T,K,R 8:30-13:00 ja 13:30-16:00;N 8:30-13:00 ja 13:30-18:00;L,P suletud", "destination_id": 69400, "street_address": "P\u00e4rnu maantee 8", "postal_code": "69400", "coordinate_x": "58.1264356146443", "coordinate_y": "25.3548298784361", "temp_service_hours": null, "temp_service_hours_until": null, "temp_service_hours_2": "25.03.2016 suletud", "temp_service_hours_2_until": "25.03.2016", "comment_et": null, "comment_en": null, "comment_ru": null, "comment_fi": null, "comment_lv": null, "comment_lt": null }'; $name = 'Location'; $vendor = 'Makecommerce'; $module = 'Omniva'; if ($_SERVER['REQUEST_METHOD'] === 'POST') { $json = $_POST['json']; $name = $_POST['name']; $vendor = $_POST['vendor']; $module = $_POST['module']; $base = " namespace $vendor\\$module\\Api\\Data interface {$name}Interface {". /**#@+ * Constants defined for keys of array, makes typos less likely */ ""; $json = json_decode($json, true); $base .= ' '; foreach ($json as $key => $value) { $value = strtoupper(preg_replace('|([a-z])([A-Z])|', '$1_$2', $key)); // $base .= 'const '; // $base .= $value; // $base .= " = '".$key."';"; // $base .=' // '; $json[$key] = $value; } // $base .= ' // /**#@-*/ // '; foreach ($json as $key => $value) { $base .= ' /** * * @return string|null */ public function get'; $base .= ucfirst(preg_replace_callback("/_([a-z])?/", function($match){ return strtoupper($match[1]); },$key)); $base .='(); '; } foreach ($json as $key => $value) { $converted = preg_replace_callback("/_([a-z])?/", function($match){ return strtoupper($match[1]); },$key); $base .= ' /** * * @param string|null $'.$converted.' * @return $this */ public function set'; $base .= ucfirst($converted); $base .='( $'.$converted.' ); '; } $base .= ' }'; echo "<pre>"; echo $base; die; } ?> <form> <label for="json">Json</label> <textarea id="json" name="json"></textarea><br> <label for="name">Name(before Interface) $name.Interface</label> <input type="text" name="name" id="name"><br> <label for="vendor">Vendor $vendor\$module\Api\Data</label> <input type="text" name="vendor" id="vendor"><br> <label for="module">Module $vendor\$module\Api\Data</label> <input type="module" name="module" id="module"><br> <input type="submit"> </form>
Please, can you explain your problem little bit more ? Do you want the to create your custom REST API for your module or anything else ?