for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace Hyde\Framework\Actions\Constructors;
use Hyde\Framework\Models\Image;
use Hyde\Framework\Models\Pages\MarkdownPost;
/**
* @internal
*
* @see \Hyde\Framework\Testing\Unit\ConfiguresFeaturedImageForPostTest
*/
class ConfiguresFeaturedImageForPost
{
public static function run(MarkdownPost $page): Image|null
return (new static($page))->constructImage();
}
protected function __construct(protected MarkdownPost $page)
private function constructImage(): Image|null
if ($this->page->matter('image') !== null) {
if (is_string($this->page->matter('image'))) {
return $this->constructBaseImage($this->page->matter('image'));
if (is_array($this->page->matter('image'))) {
return new Image($this->page->matter('image'));
return null;
private function constructBaseImage(string $image): Image
return str_starts_with($image, 'http')
? new Image(['uri' => $image])
: new Image(['path' => $image]);