Skip to content

Commit

Permalink
Use interfaces instead of abstract classes
Browse files Browse the repository at this point in the history
  • Loading branch information
mlocati committed Jul 1, 2024
1 parent 128a1b6 commit c8efcae
Show file tree
Hide file tree
Showing 6 changed files with 27 additions and 21 deletions.
9 changes: 8 additions & 1 deletion src/GeographicalSubdivision.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,17 @@

namespace MLocati\ComuniItaliani;

final class GeographicalSubdivision extends TerritoryWithChildren
final class GeographicalSubdivision implements TerritoryWithChildren
{
private array $data;

private ?array $regions = null;

public function __construct(array $data)
{
$this->data = $data;
}

/**
* {@inheritdoc}
*
Expand Down
6 changes: 4 additions & 2 deletions src/Municipality.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,15 @@

namespace MLocati\ComuniItaliani;

final class Municipality extends Territory
final class Municipality implements Territory
{
private array $data;

private Province $province;

public function __construct(array $data, Province $province)
{
parent::__construct($data);
$this->data = $data;
$this->province = $province;
}

Expand Down
6 changes: 4 additions & 2 deletions src/Province.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,17 @@

namespace MLocati\ComuniItaliani;

final class Province extends TerritoryWithChildren
final class Province implements TerritoryWithChildren
{
private array $data;

private Region $region;

private ?array $municipalities = null;

public function __construct(array $data, Region $region)
{
parent::__construct($data);
$this->data = $data;
$this->region = $region;
}

Expand Down
6 changes: 4 additions & 2 deletions src/Region.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,17 @@

namespace MLocati\ComuniItaliani;

final class Region extends TerritoryWithChildren
final class Region implements TerritoryWithChildren
{
private array $data;

private GeographicalSubdivision $geographicalSubdivision;

private ?array $provinces = null;

public function __construct(array $data, GeographicalSubdivision $geographicalSubdivision)
{
parent::__construct($data);
$this->data = $data;
$this->geographicalSubdivision = $geographicalSubdivision;
}

Expand Down
17 changes: 5 additions & 12 deletions src/Territory.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,23 +4,16 @@

namespace MLocati\ComuniItaliani;

abstract class Territory
interface Territory
{
protected array $data;

public function __construct(array $data)
{
$this->data = $data;
}

/**
* @return string|int
*/
abstract public function getID();
public function getID();

abstract public function getParent(): ?Territory;
public function getParent(): ?Territory;

abstract public function getName(): string;
public function getName(): string;

abstract public function __toString(): string;
public function __toString(): string;
}
4 changes: 2 additions & 2 deletions src/TerritoryWithChildren.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@

namespace MLocati\ComuniItaliani;

abstract class TerritoryWithChildren extends Territory
interface TerritoryWithChildren extends Territory
{
/**
* @return \MLocati\ComuniItaliani\Territory[]
*/
abstract public function getChildren(): array;
public function getChildren(): array;
}

0 comments on commit c8efcae

Please sign in to comment.