Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
refactor: add PHPStan generic type annotations to Extractors and Dete…
…ctors

      Added PHPDoc template annotations to improve type safety and PHPStan compatibility across all adapter classes. This change removes the need for inline @var annotations by properly declaring generic type
      relationships between Extractors and Detectors.
  • Loading branch information
sasezaki committed Oct 22, 2025
commit 6a435269c9a02d2fb301cf1a7670dff0c4c531a9
5 changes: 3 additions & 2 deletions src/Adapters/Archive/Detectors/AuthorName.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,15 @@

namespace Embed\Adapters\Archive\Detectors;

use Embed\Adapters\Archive\Extractor;
use Embed\Detectors\AuthorName as Detector;

/**
* @extends Detector<\Embed\Adapters\Archive\Extractor>
*/
class AuthorName extends Detector
{
public function detect(): ?string
{
/** @var Extractor $extractor */
$extractor = $this->extractor;
$api = $extractor->getApi();

Expand Down
3 changes: 3 additions & 0 deletions src/Adapters/Archive/Detectors/Code.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@
use function Embed\html;
use function Embed\matchPath;

/**
* @extends Detector<\Embed\Adapters\Archive\Extractor>
*/
class Code extends Detector
{
public function detect(): ?EmbedCode
Expand Down
5 changes: 3 additions & 2 deletions src/Adapters/Archive/Detectors/Description.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,15 @@

namespace Embed\Adapters\Archive\Detectors;

use Embed\Adapters\Archive\Extractor;
use Embed\Detectors\Description as Detector;

/**
* @extends Detector<\Embed\Adapters\Archive\Extractor>
*/
class Description extends Detector
{
public function detect(): ?string
{
/** @var Extractor $extractor */
$extractor = $this->extractor;
$api = $extractor->getApi();

Expand Down
3 changes: 3 additions & 0 deletions src/Adapters/Archive/Detectors/ProviderName.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@

use Embed\Detectors\ProviderName as Detector;

/**
* @extends Detector<\Embed\Adapters\Archive\Extractor>
*/
class ProviderName extends Detector
{
public function detect(): string
Expand Down
5 changes: 3 additions & 2 deletions src/Adapters/Archive/Detectors/PublishedTime.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,15 @@
namespace Embed\Adapters\Archive\Detectors;

use DateTime;
use Embed\Adapters\Archive\Extractor;
use Embed\Detectors\PublishedTime as Detector;

/**
* @extends Detector<\Embed\Adapters\Archive\Extractor>
*/
class PublishedTime extends Detector
{
public function detect(): ?DateTime
{
/** @var Extractor $extractor */
$extractor = $this->extractor;
$api = $extractor->getApi();

Expand Down
5 changes: 3 additions & 2 deletions src/Adapters/Archive/Detectors/Title.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,15 @@

namespace Embed\Adapters\Archive\Detectors;

use Embed\Adapters\Archive\Extractor;
use Embed\Detectors\Title as Detector;

/**
* @extends Detector<\Embed\Adapters\Archive\Extractor>
*/
class Title extends Detector
{
public function detect(): ?string
{
/** @var Extractor $extractor */
$extractor = $this->extractor;
$api = $extractor->getApi();

Expand Down
6 changes: 3 additions & 3 deletions src/Adapters/Archive/Extractor.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\UriInterface;

/**
* @template-extends Base<\Embed\Detectors\Detector<self>>
*/
class Extractor extends Base
{
private Api $api;
Expand All @@ -28,9 +31,6 @@ public function getApi(): Api
return $this->api;
}

/**
* @return array<string, \Embed\Detectors\Detector>
*/
public function createCustomDetectors(): array
{
return [
Expand Down
3 changes: 3 additions & 0 deletions src/Adapters/Bandcamp/Detectors/ProviderName.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@

use Embed\Detectors\ProviderName as Detector;

/**
* @extends Detector<\Embed\Adapters\Bandcamp\Extractor>
*/
class ProviderName extends Detector
{
public function detect(): string
Expand Down
6 changes: 3 additions & 3 deletions src/Adapters/Bandcamp/Extractor.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@

use Embed\Extractor as Base;

/**
* @template-extends Base<\Embed\Detectors\Detector<self>>
*/
class Extractor extends Base
{
/**
* @return array<string, \Embed\Detectors\Detector>
*/
public function createCustomDetectors(): array
{
return [
Expand Down
3 changes: 3 additions & 0 deletions src/Adapters/CadenaSer/Detectors/Code.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@
use function Embed\html;
use function Embed\matchPath;

/**
* @extends Detector<\Embed\Adapters\CadenaSer\Extractor>
*/
class Code extends Detector
{
public function detect(): ?EmbedCode
Expand Down
6 changes: 3 additions & 3 deletions src/Adapters/CadenaSer/Extractor.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@

use Embed\Extractor as Base;

/**
* @template-extends Base<\Embed\Detectors\Detector<self>>
*/
class Extractor extends Base
{
/**
* @return array<string, \Embed\Detectors\Detector>
*/
public function createCustomDetectors(): array
{
return [
Expand Down
3 changes: 3 additions & 0 deletions src/Adapters/Facebook/Detectors/Title.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@

use Embed\Detectors\Title as Detector;

/**
* @extends Detector<\Embed\Adapters\Facebook\Extractor>
*/
class Title extends Detector
{
/**
Expand Down
2 changes: 1 addition & 1 deletion src/Adapters/Facebook/Extractor.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
class Extractor extends Base
{
/**
* @return array<string, \Embed\Detectors\Detector>
* @return array{title: Detectors\Title}
*/
public function createCustomDetectors(): array
{
Expand Down
3 changes: 3 additions & 0 deletions src/Adapters/Flickr/Detectors/Code.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@
use function Embed\html;
use function Embed\matchPath;

/**
* @extends Detector<\Embed\Adapters\Flickr\Extractor>
*/
class Code extends Detector
{
public function detect(): ?EmbedCode
Expand Down
6 changes: 3 additions & 3 deletions src/Adapters/Flickr/Extractor.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@

use Embed\Extractor as Base;

/**
* @template-extends Base<\Embed\Detectors\Detector<self>>
*/
class Extractor extends Base
{
/**
* @return array<string, \Embed\Detectors\Detector>
*/
public function createCustomDetectors(): array
{
return [
Expand Down
5 changes: 3 additions & 2 deletions src/Adapters/Gist/Detectors/AuthorName.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,15 @@

namespace Embed\Adapters\Gist\Detectors;

use Embed\Adapters\Gist\Extractor;
use Embed\Detectors\AuthorName as Detector;

/**
* @extends Detector<\Embed\Adapters\Gist\Extractor>
*/
class AuthorName extends Detector
{
public function detect(): ?string
{
/** @var Extractor $extractor */
$extractor = $this->extractor;
$api = $extractor->getApi();

Expand Down
5 changes: 3 additions & 2 deletions src/Adapters/Gist/Detectors/AuthorUrl.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,16 @@

namespace Embed\Adapters\Gist\Detectors;

use Embed\Adapters\Gist\Extractor;
use Embed\Detectors\AuthorUrl as Detector;
use Psr\Http\Message\UriInterface;

/**
* @extends Detector<\Embed\Adapters\Gist\Extractor>
*/
class AuthorUrl extends Detector
{
public function detect(): ?UriInterface
{
/** @var Extractor $extractor */
$extractor = $this->extractor;
$api = $extractor->getApi();
$owner = $api->str('owner');
Expand Down
5 changes: 3 additions & 2 deletions src/Adapters/Gist/Detectors/Code.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,13 @@

namespace Embed\Adapters\Gist\Detectors;

use Embed\Adapters\Gist\Extractor;
use Embed\Detectors\Code as Detector;
use Embed\EmbedCode;
use function Embed\html;

/**
* @extends Detector<\Embed\Adapters\Gist\Extractor>
*/
class Code extends Detector
{
public function detect(): ?EmbedCode
Expand All @@ -18,7 +20,6 @@ public function detect(): ?EmbedCode

private function fallback(): ?EmbedCode
{
/** @var Extractor $extractor */
$extractor = $this->extractor;
$api = $extractor->getApi();

Expand Down
5 changes: 3 additions & 2 deletions src/Adapters/Gist/Detectors/PublishedTime.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,15 @@
namespace Embed\Adapters\Gist\Detectors;

use DateTime;
use Embed\Adapters\Gist\Extractor;
use Embed\Detectors\PublishedTime as Detector;

/**
* @extends Detector<\Embed\Adapters\Gist\Extractor>
*/
class PublishedTime extends Detector
{
public function detect(): ?DateTime
{
/** @var Extractor $extractor */
$extractor = $this->extractor;
$api = $extractor->getApi();

Expand Down
6 changes: 3 additions & 3 deletions src/Adapters/Gist/Extractor.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\UriInterface;

/**
* @template-extends Base<\Embed\Detectors\Detector<self>>
*/
class Extractor extends Base
{
private Api $api;
Expand All @@ -28,9 +31,6 @@ public function getApi(): Api
return $this->api;
}

/**
* @return array<string, \Embed\Detectors\Detector>
*/
public function createCustomDetectors(): array
{
return [
Expand Down
3 changes: 3 additions & 0 deletions src/Adapters/Github/Detectors/Code.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@
use function Embed\html;
use function Embed\matchPath;

/**
* @extends Detector<\Embed\Adapters\Github\Extractor>
*/
class Code extends Detector
{
public function detect(): ?EmbedCode
Expand Down
6 changes: 3 additions & 3 deletions src/Adapters/Github/Extractor.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@

use Embed\Extractor as Base;

/**
* @template-extends Base<\Embed\Detectors\Detector<self>>
*/
class Extractor extends Base
{
/**
* @return array<string, \Embed\Detectors\Detector>
*/
public function createCustomDetectors(): array
{
return [
Expand Down
3 changes: 3 additions & 0 deletions src/Adapters/Ideone/Detectors/Code.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@
use Embed\EmbedCode;
use function Embed\html;

/**
* @extends Detector<\Embed\Adapters\Ideone\Extractor>
*/
class Code extends Detector
{
public function detect(): ?EmbedCode
Expand Down
6 changes: 3 additions & 3 deletions src/Adapters/Ideone/Extractor.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@

use Embed\Extractor as Base;

/**
* @template-extends Base<\Embed\Detectors\Detector<self>>
*/
class Extractor extends Base
{
/**
* @return array<string, \Embed\Detectors\Detector>
*/
public function createCustomDetectors(): array
{
return [
Expand Down
4 changes: 3 additions & 1 deletion src/Adapters/ImageShack/Detectors/AuthorName.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,13 @@
use Embed\Adapters\ImageShack\Extractor;
use Embed\Detectors\AuthorName as Detector;

/**
* @extends Detector<\Embed\Adapters\ImageShack\Extractor>
*/
class AuthorName extends Detector
{
public function detect(): ?string
{
/** @var Extractor $extractor */
$extractor = $this->extractor;
$api = $extractor->getApi();

Expand Down
5 changes: 3 additions & 2 deletions src/Adapters/ImageShack/Detectors/AuthorUrl.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,16 @@

namespace Embed\Adapters\ImageShack\Detectors;

use Embed\Adapters\ImageShack\Extractor;
use Embed\Detectors\AuthorUrl as Detector;
use Psr\Http\Message\UriInterface;

/**
* @extends Detector<\Embed\Adapters\ImageShack\Extractor>
*/
class AuthorUrl extends Detector
{
public function detect(): ?UriInterface
{
/** @var Extractor $extractor */
$extractor = $this->extractor;
$api = $extractor->getApi();
$owner = $api->str('owner', 'username');
Expand Down
Loading