[ Index ] |
PHP Cross Reference of Joomla 4.2.2 documentation |
[Summary view] [Print] [Text view]
1 <?php 2 3 /* 4 * This file is part of JSON-API. 5 * 6 * (c) Toby Zerner <[email protected]> 7 * 8 * For the full copyright and license information, please view the LICENSE 9 * file that was distributed with this source code. 10 */ 11 12 namespace Tobscure\JsonApi; 13 14 use LogicException; 15 16 abstract class AbstractSerializer implements SerializerInterface 17 { 18 /** 19 * The type. 20 * 21 * @var string 22 */ 23 protected $type; 24 25 /** 26 * {@inheritdoc} 27 */ 28 public function getType($model) 29 { 30 return $this->type; 31 } 32 33 /** 34 * {@inheritdoc} 35 */ 36 public function getId($model) 37 { 38 return $model->id; 39 } 40 41 /** 42 * {@inheritdoc} 43 */ 44 public function getAttributes($model, array $fields = null) 45 { 46 return []; 47 } 48 49 /** 50 * {@inheritdoc} 51 */ 52 public function getLinks($model) 53 { 54 return []; 55 } 56 57 /** 58 * {@inheritdoc} 59 */ 60 public function getMeta($model) 61 { 62 return []; 63 } 64 65 /** 66 * {@inheritdoc} 67 * 68 * @throws \LogicException 69 */ 70 public function getRelationship($model, $name) 71 { 72 $method = $this->getRelationshipMethodName($name); 73 74 if (method_exists($this, $method)) { 75 $relationship = $this->$method($model); 76 77 if ($relationship !== null && ! ($relationship instanceof Relationship)) { 78 throw new LogicException('Relationship method must return null or an instance of Tobscure\JsonApi\Relationship'); 79 } 80 81 return $relationship; 82 } 83 } 84 85 /** 86 * Get the serializer method name for the given relationship. 87 * 88 * snake_case and kebab-case are converted into camelCase. 89 * 90 * @param string $name 91 * 92 * @return string 93 */ 94 private function getRelationshipMethodName($name) 95 { 96 if (stripos($name, '-')) { 97 $name = lcfirst(implode('', array_map('ucfirst', explode('-', $name)))); 98 } 99 100 if (stripos($name, '_')) { 101 $name = lcfirst(implode('', array_map('ucfirst', explode('_', $name)))); 102 } 103 104 return $name; 105 } 106 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Wed Sep 7 05:41:13 2022 | Chilli.vc Blog - For Webmaster,Blog-Writer,System Admin and Domainer |