for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
declare(strict_types=1);
namespace Cycle\ORM\Promise\Declaration;
class Schema
{
/** @var Schema\Class_ */
public $class;
public $extends;
public function __construct(string $extends, string $class)
$this->class = Schema\Class_::create($this->extractClass($class), $this->extractExtendedNamespace($class, $extends));
$this->extends = Schema\Class_::create($this->extractClass($extends), $this->extractNamespace($extends));
}
private function extractClass(string $class): string
$lastPosition = mb_strripos($class, '\\');
if ($lastPosition === false) {
return $class;
return mb_substr($class, $lastPosition + 1);
private function extractExtendedNamespace(string $class, string $extends): ?string
if ($lastPosition === 0) {
return null;
if ($lastPosition !== false) {
return $this->extractNamespace($class);
return $this->extractNamespace($extends);
private function extractNamespace(string $class): ?string
if ($lastPosition === false || $lastPosition === 0) {
return mb_substr($class, 0, $lastPosition);