Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision

Target

Select target project
  • grifart/scaffolder
1 result
Select Git revision
Show changes
Commits on Source (4)
parameters:
ignoreErrors:
-
message: "#^Function enum_exists not found\\.$#"
count: 1
path: src/Definition/Types/CheckedClassType.php
-
message: "#^Function enum_exists not found\\.$#"
count: 1
path: src/Definition/Types/functions.php
......@@ -26,7 +26,7 @@ composer require grifart/scaffolder
<?php
use Grifart\ClassScaffolder\Capabilities;
use Grifart\ClassScaffolder\Definition\definitionOf;
use function Grifart\ClassScaffolder\Definition\definitionOf;
use Grifart\ClassScaffolder\Definition\Types;
return [
......
<?php
declare(strict_types=1);
namespace Grifart\ClassScaffolder\Capabilities;
use Grifart\ClassScaffolder\ClassInNamespace;
use Grifart\ClassScaffolder\Definition\ClassDefinition;
final class ReadonlyClass implements Capability
{
public function applyTo(
ClassDefinition $definition,
ClassInNamespace $draft,
?ClassInNamespace $current,
): void
{
$classType = $draft->getClassType();
$classType->setReadOnly();
CapabilityTools::checkIfAllFieldsArePresent($definition, $classType);
foreach ($definition->getFields() as $field) {
$fieldName = $field->getName();
$property = CapabilityTools::getProperty($classType, $fieldName);
$property->setPublic();
}
}
}
......@@ -54,6 +54,10 @@ function properties(): Properties {
return new Properties();
}
function readonlyClass(): ReadonlyClass {
return new ReadonlyClass();
}
function readonlyProperties(): ReadonlyProperties {
return new ReadonlyProperties();
}
......
<?php
/**
* Do not edit. This is generated file. Modify definition file instead.
*/
declare(strict_types=1);
namespace RootNamespace\SubNamespace;
use Iterator;
final readonly class ClassName
{
/**
* @param Iterator<string, int[]> $field2
*/
public function __construct(
public ?string $field1,
public Iterator $field2,
) {
}
}
<?php
declare(strict_types=1);
namespace Grifart\ClassScaffolder\Test\Capabilities;
use function Grifart\ClassScaffolder\Capabilities\constructorWithPromotedProperties;
use function Grifart\ClassScaffolder\Capabilities\readonlyClass;
require __DIR__ . '/../bootstrap.php';
final class ReadonlyClassTest extends CapabilityTestCase
{
protected function getCapabilities(): array
{
return [
constructorWithPromotedProperties(),
readonlyClass(),
];
}
}
(new ReadonlyClassTest())->run();