Replace BaseEntity with BaseDataTransferObject class for API representation classes

This commit is contained in:
Hypolite Petovan 2021-01-17 16:04:00 -05:00
parent 3e257d4266
commit 0fc5f26ff7
18 changed files with 53 additions and 49 deletions

View file

@ -22,20 +22,20 @@
namespace Friendica; namespace Friendica;
/** /**
* The API entity classes are meant as data transfer objects. As such, their member should be protected. * These data transfer object classes are meant for API representations. As such, their members should be protected.
* Then the JsonSerializable interface ensures the protected members will be included in a JSON encode situation. * Then the JsonSerializable interface ensures the protected members will be included in a JSON encode situation.
* *
* Constructors are supposed to take as arguments the Friendica dependencies/model/collection/data it needs to * Constructors are supposed to take as arguments the Friendica dependencies/model/collection/data it needs to
* populate the class members. * populate the class members.
*/ */
abstract class BaseEntity implements \JsonSerializable abstract class BaseDataTransferObject implements \JsonSerializable
{ {
/** /**
* Returns the current entity as an json array * Returns the current entity as an json array
* *
* @return array * @return array
*/ */
public function jsonSerialize() public function jsonSerialize(): array
{ {
return $this->toArray(); return $this->toArray();
} }
@ -45,7 +45,7 @@ abstract class BaseEntity implements \JsonSerializable
* *
* @return array * @return array
*/ */
public function toArray() public function toArray(): array
{ {
return get_object_vars($this); return get_object_vars($this);
} }

View file

@ -31,7 +31,7 @@ use Psr\Log\LoggerInterface;
* *
* @property int id * @property int id
*/ */
abstract class BaseModel extends BaseEntity abstract class BaseModel extends BaseDataTransferObject
{ {
/** @var Database */ /** @var Database */
protected $dba; protected $dba;
@ -67,7 +67,7 @@ abstract class BaseModel extends BaseEntity
$this->originalData = $data; $this->originalData = $data;
} }
public function getOriginalData() public function getOriginalData(): array
{ {
return $this->originalData; return $this->originalData;
} }
@ -84,7 +84,7 @@ abstract class BaseModel extends BaseEntity
* @param array $data * @param array $data
* @return BaseModel * @return BaseModel
*/ */
public static function createFromPrototype(BaseModel $prototype, array $data) public static function createFromPrototype(BaseModel $prototype, array $data): BaseModel
{ {
$model = clone $prototype; $model = clone $prototype;
$model->data = $data; $model->data = $data;
@ -100,7 +100,7 @@ abstract class BaseModel extends BaseEntity
* @param $name * @param $name
* @return bool * @return bool
*/ */
public function __isset($name) public function __isset($name): bool
{ {
return in_array($name, array_merge(array_keys($this->data), array_keys(get_object_vars($this)))); return in_array($name, array_merge(array_keys($this->data), array_keys(get_object_vars($this))));
} }
@ -126,15 +126,19 @@ abstract class BaseModel extends BaseEntity
} }
/** /**
* * Magic setter. This allows to set model fields with the following syntax:
* - $model->field = $value (outside of class)
* - $this->field = $value (inside of class)
*
* @param string $name * @param string $name
* @param mixed $value * @param mixed $value
*/ */
public function __set($name, $value) public function __set(string $name, $value)
{ {
$this->data[$name] = $value; $this->data[$name] = $value;
} }
public function toArray() public function toArray(): array
{ {
return $this->data; return $this->data;
} }

View file

@ -21,7 +21,7 @@
namespace Friendica\Object\Api\Friendica; namespace Friendica\Object\Api\Friendica;
use Friendica\BaseEntity; use Friendica\BaseDataTransferObject;
use Friendica\Content\Text\BBCode; use Friendica\Content\Text\BBCode;
use Friendica\Content\Text\HTML; use Friendica\Content\Text\HTML;
use Friendica\Model\Notify; use Friendica\Model\Notify;
@ -33,7 +33,7 @@ use Friendica\Util\Temporal;
* *
* @see https://github.com/friendica/friendica/blob/develop/doc/API-Entities.md#notification * @see https://github.com/friendica/friendica/blob/develop/doc/API-Entities.md#notification
*/ */
class Notification extends BaseEntity class Notification extends BaseDataTransferObject
{ {
/** @var integer */ /** @var integer */
protected $id; protected $id;

View file

@ -22,7 +22,7 @@
namespace Friendica\Object\Api\Mastodon; namespace Friendica\Object\Api\Mastodon;
use Friendica\App\BaseURL; use Friendica\App\BaseURL;
use Friendica\BaseEntity; use Friendica\BaseDataTransferObject;
use Friendica\Collection\Api\Mastodon\Fields; use Friendica\Collection\Api\Mastodon\Fields;
use Friendica\Content\Text\BBCode; use Friendica\Content\Text\BBCode;
use Friendica\Database\DBA; use Friendica\Database\DBA;
@ -34,7 +34,7 @@ use Friendica\Util\DateTimeFormat;
* *
* @see https://docs.joinmastodon.org/entities/account * @see https://docs.joinmastodon.org/entities/account
*/ */
class Account extends BaseEntity class Account extends BaseDataTransferObject
{ {
/** @var string */ /** @var string */
protected $id; protected $id;
@ -138,7 +138,7 @@ class Account extends BaseEntity
* *
* @return array * @return array
*/ */
public function toArray() public function toArray(): array
{ {
$account = parent::toArray(); $account = parent::toArray();

View file

@ -21,14 +21,14 @@
namespace Friendica\Object\Api\Mastodon; namespace Friendica\Object\Api\Mastodon;
use Friendica\BaseEntity; use Friendica\BaseDataTransferObject;
/** /**
* Class Activity * Class Activity
* *
* @see https://docs.joinmastodon.org/entities/activity * @see https://docs.joinmastodon.org/entities/activity
*/ */
class Activity extends BaseEntity class Activity extends BaseDataTransferObject
{ {
/** @var string (UNIX Timestamp) */ /** @var string (UNIX Timestamp) */
protected $week; protected $week;

View file

@ -21,14 +21,14 @@
namespace Friendica\Object\Api\Mastodon; namespace Friendica\Object\Api\Mastodon;
use Friendica\BaseEntity; use Friendica\BaseDataTransferObject;
/** /**
* Class Application * Class Application
* *
* @see https://docs.joinmastodon.org/entities/application * @see https://docs.joinmastodon.org/entities/application
*/ */
class Application extends BaseEntity class Application extends BaseDataTransferObject
{ {
/** @var string */ /** @var string */
protected $name; protected $name;

View file

@ -21,14 +21,14 @@
namespace Friendica\Object\Api\Mastodon; namespace Friendica\Object\Api\Mastodon;
use Friendica\BaseEntity; use Friendica\BaseDataTransferObject;
/** /**
* Class Attachment * Class Attachment
* *
* @see https://docs.joinmastodon.org/entities/attachment * @see https://docs.joinmastodon.org/entities/attachment
*/ */
class Attachment extends BaseEntity class Attachment extends BaseDataTransferObject
{ {
/** @var string */ /** @var string */
protected $id; protected $id;
@ -67,7 +67,7 @@ class Attachment extends BaseEntity
* *
* @return array * @return array
*/ */
public function toArray() public function toArray(): array
{ {
$attachment = parent::toArray(); $attachment = parent::toArray();

View file

@ -21,14 +21,14 @@
namespace Friendica\Object\Api\Mastodon; namespace Friendica\Object\Api\Mastodon;
use Friendica\BaseEntity; use Friendica\BaseDataTransferObject;
/** /**
* Class Card * Class Card
* *
* @see https://docs.joinmastodon.org/entities/card * @see https://docs.joinmastodon.org/entities/card
*/ */
class Card extends BaseEntity class Card extends BaseDataTransferObject
{ {
/** @var string */ /** @var string */
protected $url; protected $url;
@ -67,10 +67,10 @@ class Card extends BaseEntity
* *
* @return array * @return array
*/ */
public function toArray() public function toArray(): array
{ {
if (empty($this->url)) { if (empty($this->url)) {
return null; return [];
} }
return parent::toArray(); return parent::toArray();

View file

@ -21,14 +21,14 @@
namespace Friendica\Object\Api\Mastodon; namespace Friendica\Object\Api\Mastodon;
use Friendica\BaseEntity; use Friendica\BaseDataTransferObject;
/** /**
* Class Emoji * Class Emoji
* *
* @see https://docs.joinmastodon.org/entities/emoji/ * @see https://docs.joinmastodon.org/entities/emoji/
*/ */
class Emoji extends BaseEntity class Emoji extends BaseDataTransferObject
{ {
//Required attributes //Required attributes
/** @var string */ /** @var string */

View file

@ -21,14 +21,14 @@
namespace Friendica\Object\Api\Mastodon; namespace Friendica\Object\Api\Mastodon;
use Friendica\BaseEntity; use Friendica\BaseDataTransferObject;
/** /**
* Class Error * Class Error
* *
* @see https://docs.joinmastodon.org/entities/error * @see https://docs.joinmastodon.org/entities/error
*/ */
class Error extends BaseEntity class Error extends BaseDataTransferObject
{ {
/** @var string */ /** @var string */
protected $error; protected $error;
@ -53,7 +53,7 @@ class Error extends BaseEntity
* *
* @return array * @return array
*/ */
public function toArray() public function toArray(): array
{ {
$error = parent::toArray(); $error = parent::toArray();

View file

@ -21,14 +21,14 @@
namespace Friendica\Object\Api\Mastodon; namespace Friendica\Object\Api\Mastodon;
use Friendica\BaseEntity; use Friendica\BaseDataTransferObject;
/** /**
* Class Field * Class Field
* *
* @see https://docs.joinmastodon.org/entities/field/ * @see https://docs.joinmastodon.org/entities/field/
*/ */
class Field extends BaseEntity class Field extends BaseDataTransferObject
{ {
/** @var string */ /** @var string */
protected $name; protected $name;

View file

@ -21,7 +21,7 @@
namespace Friendica\Object\Api\Mastodon; namespace Friendica\Object\Api\Mastodon;
use Friendica\BaseEntity; use Friendica\BaseDataTransferObject;
use Friendica\Database\DBA; use Friendica\Database\DBA;
use Friendica\DI; use Friendica\DI;
use Friendica\Model\User; use Friendica\Model\User;
@ -32,7 +32,7 @@ use Friendica\Module\Register;
* *
* @see https://docs.joinmastodon.org/api/entities/#instance * @see https://docs.joinmastodon.org/api/entities/#instance
*/ */
class Instance extends BaseEntity class Instance extends BaseDataTransferObject
{ {
/** @var string (URL) */ /** @var string (URL) */
protected $uri; protected $uri;

View file

@ -22,14 +22,14 @@
namespace Friendica\Object\Api\Mastodon; namespace Friendica\Object\Api\Mastodon;
use Friendica\App\BaseURL; use Friendica\App\BaseURL;
use Friendica\BaseEntity; use Friendica\BaseDataTransferObject;
/** /**
* Class Mention * Class Mention
* *
* @see https://docs.joinmastodon.org/entities/mention * @see https://docs.joinmastodon.org/entities/mention
*/ */
class Mention extends BaseEntity class Mention extends BaseDataTransferObject
{ {
/** @var string */ /** @var string */
protected $id; protected $id;

View file

@ -21,7 +21,7 @@
namespace Friendica\Object\Api\Mastodon; namespace Friendica\Object\Api\Mastodon;
use Friendica\BaseEntity; use Friendica\BaseDataTransferObject;
use Friendica\Model\Contact; use Friendica\Model\Contact;
use Friendica\Util\Network; use Friendica\Util\Network;
@ -30,7 +30,7 @@ use Friendica\Util\Network;
* *
* @see https://docs.joinmastodon.org/api/entities/#relationship * @see https://docs.joinmastodon.org/api/entities/#relationship
*/ */
class Relationship extends BaseEntity class Relationship extends BaseDataTransferObject
{ {
/** @var int */ /** @var int */
protected $id; protected $id;

View file

@ -21,7 +21,7 @@
namespace Friendica\Object\Api\Mastodon; namespace Friendica\Object\Api\Mastodon;
use Friendica\BaseEntity; use Friendica\BaseDataTransferObject;
use Friendica\Core\Protocol; use Friendica\Core\Protocol;
use Friendica\Database\DBA; use Friendica\Database\DBA;
use Friendica\DI; use Friendica\DI;
@ -31,7 +31,7 @@ use Friendica\DI;
* *
* @see https://docs.joinmastodon.org/api/entities/#stats * @see https://docs.joinmastodon.org/api/entities/#stats
*/ */
class Stats extends BaseEntity class Stats extends BaseDataTransferObject
{ {
/** @var int */ /** @var int */
protected $user_count = 0; protected $user_count = 0;

View file

@ -21,7 +21,7 @@
namespace Friendica\Object\Api\Mastodon; namespace Friendica\Object\Api\Mastodon;
use Friendica\BaseEntity; use Friendica\BaseDataTransferObject;
use Friendica\Content\Text\BBCode; use Friendica\Content\Text\BBCode;
use Friendica\Object\Api\Mastodon\Status\Counts; use Friendica\Object\Api\Mastodon\Status\Counts;
use Friendica\Object\Api\Mastodon\Status\UserAttributes; use Friendica\Object\Api\Mastodon\Status\UserAttributes;
@ -32,7 +32,7 @@ use Friendica\Util\DateTimeFormat;
* *
* @see https://docs.joinmastodon.org/entities/status * @see https://docs.joinmastodon.org/entities/status
*/ */
class Status extends BaseEntity class Status extends BaseDataTransferObject
{ {
/** @var string */ /** @var string */
protected $id; protected $id;
@ -143,7 +143,7 @@ class Status extends BaseEntity
* *
* @return array * @return array
*/ */
public function toArray() public function toArray(): array
{ {
$status = parent::toArray(); $status = parent::toArray();

View file

@ -22,14 +22,14 @@
namespace Friendica\Object\Api\Mastodon; namespace Friendica\Object\Api\Mastodon;
use Friendica\App\BaseURL; use Friendica\App\BaseURL;
use Friendica\BaseEntity; use Friendica\BaseDataTransferObject;
/** /**
* Class Tag * Class Tag
* *
* @see https://docs.joinmastodon.org/entities/tag * @see https://docs.joinmastodon.org/entities/tag
*/ */
class Tag extends BaseEntity class Tag extends BaseDataTransferObject
{ {
/** @var string */ /** @var string */
protected $name; protected $name;

View file

@ -21,14 +21,14 @@
namespace Friendica\Object\Api\Twitter; namespace Friendica\Object\Api\Twitter;
use Friendica\BaseEntity; use Friendica\BaseDataTransferObject;
use Friendica\Content\ContactSelector; use Friendica\Content\ContactSelector;
use Friendica\Content\Text\BBCode; use Friendica\Content\Text\BBCode;
/** /**
* @see https://developer.twitter.com/en/docs/tweets/data-dictionary/overview/user-object * @see https://developer.twitter.com/en/docs/tweets/data-dictionary/overview/user-object
*/ */
class User extends BaseEntity class User extends BaseDataTransferObject
{ {
/** @var int */ /** @var int */
protected $id; protected $id;