Skip to content

Commit 45cb39f

Browse files
authored
Merge pull request #18729 from craftcms/feature/create-object
[6.x] Remove remaining usages of Craft::createObject
2 parents 74928d1 + 6065ecb commit 45cb39f

18 files changed

Lines changed: 55 additions & 65 deletions

File tree

src/Address/Elements/Address.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
use CommerceGuys\Addressing\AddressInterface;
99
use CommerceGuys\Addressing\Country\Country;
1010
use CommerceGuys\Addressing\Subdivision\SubdivisionUpdater;
11-
use Craft;
1211
use craft\base\NestedElementInterface;
1312
use craft\base\NestedElementTrait;
1413
use CraftCms\Cms\Address\Addresses;
@@ -89,7 +88,7 @@ public static function hasStatuses(): bool
8988
#[Override]
9089
public static function createCondition(): ElementConditionInterface
9190
{
92-
return Craft::createObject(AddressCondition::class, [self::class]);
91+
return new AddressCondition(self::class);
9392
}
9493

9594
#[Override]

src/Asset/Assets.php

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
namespace CraftCms\Cms\Asset;
66

7-
use Craft;
87
use CraftCms\Cms\Asset\Contracts\AssetPreviewHandlerInterface;
98
use CraftCms\Cms\Asset\Data\VolumeFolder;
109
use CraftCms\Cms\Asset\Elements\Asset;
@@ -149,7 +148,7 @@ public function getThumbUrl(Asset $asset, int $width, ?int $height = null, bool
149148
]) : null;
150149
}
151150

152-
$transform = Craft::createObject(ImageTransform::class, [
151+
$transform = new ImageTransform([
153152
'width' => $width,
154153
'height' => $height,
155154
'mode' => 'crop',
@@ -187,8 +186,7 @@ public function getImagePreviewUrl(Asset $asset, int $maxWidth, int $maxHeight):
187186
$originalWidth > $width ||
188187
$originalHeight > $height
189188
) {
190-
$transform = Craft::createObject([
191-
'class' => ImageTransform::class,
189+
$transform = new ImageTransform([
192190
'width' => $width,
193191
'height' => $height,
194192
'mode' => 'crop',

src/Asset/Elements/Asset.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,7 @@ public static function find(): AssetQuery
290290
#[Override]
291291
public static function createCondition(): ElementConditionInterface
292292
{
293-
return Craft::createObject(AssetCondition::class, [self::class]);
293+
return new AssetCondition(self::class);
294294
}
295295

296296
#[Override]

src/Element/Concerns/Queryable.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
namespace CraftCms\Cms\Element\Concerns;
66

7-
use Craft;
87
use CraftCms\Cms\Element\Conditions\Contracts\ElementConditionInterface;
98
use CraftCms\Cms\Element\Conditions\ElementCondition;
109
use CraftCms\Cms\Element\Queries\Contracts\ElementQueryInterface;
@@ -57,7 +56,7 @@ public static function get(int|string $id): ?static
5756

5857
public static function createCondition(): ElementConditionInterface
5958
{
60-
return Craft::createObject(ElementCondition::class, [static::class]);
59+
return new ElementCondition(static::class);
6160
}
6261

6362
/**

src/Entry/Elements/Entry.php

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ public static function find(): EntryQuery
215215
#[Override]
216216
public static function createCondition(): ElementConditionInterface
217217
{
218-
return Craft::createObject(EntryCondition::class, [self::class]);
218+
return new EntryCondition(self::class);
219219
}
220220

221221
#[Override]
@@ -1764,9 +1764,7 @@ public function setStatus(string $status): void
17641764

17651765
public function createAnother(): self
17661766
{
1767-
/** @var self $entry */
1768-
$entry = Craft::createObject([
1769-
'class' => self::class,
1767+
$entry = new self([
17701768
'sectionId' => $this->sectionId,
17711769
'fieldId' => $this->fieldId,
17721770
'primaryOwnerId' => $this->getPrimaryOwnerId(),

src/FieldLayout/FieldLayout.php

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
namespace CraftCms\Cms\FieldLayout;
66

77
use Closure;
8-
use Craft;
98
use craft\base\ElementInterface;
109
use CraftCms\Cms\Component\Component;
1110
use CraftCms\Cms\Field\ContentBlock;
@@ -421,10 +420,9 @@ public function getAvailableCustomFields(): array
421420
return $this->_availableCustomFields;
422421
}
423422

424-
$customFields = Fields::getAllFields()->map(fn (FieldInterface $field) => Craft::createObject([
425-
'class' => CustomField::class,
423+
$customFields = Fields::getAllFields()->map(fn (FieldInterface $field) => new CustomField($field, [
426424
'layout' => $this,
427-
], [$field]))->all();
425+
]))->all();
428426

429427
$this->_availableCustomFields = [
430428
t('Custom Fields') => $customFields,
@@ -452,9 +450,11 @@ public function getAvailableNativeFields(): array
452450

453451
// Instantiate them
454452
foreach ($event->fields as $field) {
455-
if (is_string($field) || is_array($field)) {
456-
$field = Craft::createObject($field);
457-
}
453+
$field = match (true) {
454+
is_string($field) => app()->make($field),
455+
is_array($field) => app()->make(Arr::pull($field, 'class'), ['config' => $field]),
456+
default => $field,
457+
};
458458

459459
if (! $field instanceof BaseField) {
460460
throw new InvalidConfigException('Invalid standard field config');
@@ -491,9 +491,11 @@ public function getAvailableUiElements(): array
491491

492492
// Instantiate them
493493
foreach ($elements as &$element) {
494-
if (is_string($element) || is_array($element)) {
495-
$element = Craft::createObject($element);
496-
}
494+
$element = match (true) {
495+
is_string($element) => app()->make($element),
496+
is_array($element) => app()->make(Arr::pull($element, 'class'), ['config' => $element]),
497+
default => $element,
498+
};
497499

498500
if (! $element instanceof FieldLayoutElement) {
499501
throw new InvalidConfigException('Invalid UI element config');

src/Gql/Gql.php

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
namespace CraftCms\Cms\Gql;
66

7-
use Craft;
87
use craft\base\ElementInterface as BaseElementInterface;
98
use craft\behaviors\FieldLayoutBehavior;
109
use CraftCms\Cms\Asset\Volumes;
@@ -288,12 +287,8 @@ public function executeQuery(
288287
bool $debugMode = false,
289288
): array {
290289
$context = [
291-
'conditionBuilder' => Craft::createObject([
292-
'class' => ElementQueryConditionBuilder::class,
293-
]),
294-
'argumentManager' => Craft::createObject([
295-
'class' => ArgumentManager::class,
296-
]),
290+
'conditionBuilder' => new ElementQueryConditionBuilder,
291+
'argumentManager' => new ArgumentManager,
297292
];
298293
$result = $rootValue = null;
299294
$dep = null;
@@ -975,7 +970,7 @@ public function handleQueryErrors(array $errors, callable $formatter): array
975970
}
976971

977972
// Log it.
978-
Craft::$app->getErrorHandler()->logException($originException);
973+
report($originException);
979974
}
980975

981976
return array_map($formatter, $errors);
@@ -985,7 +980,7 @@ public function prepareFieldDefinitions(array $fields, string $typeName): array
985980
{
986981
if (! array_key_exists($typeName, $this->_typeDefinitions)) {
987982
if ($this->_typeManager === null) {
988-
$this->_typeManager = Craft::createObject(TypeManager::class);
983+
$this->_typeManager = new TypeManager;
989984
}
990985

991986
$this->_typeDefinitions[$typeName] = $this->_typeManager->registerFieldDefinitions($fields, $typeName);
@@ -1028,7 +1023,7 @@ private function _getCacheKey(
10281023
'::'.serialize($variables).
10291024
($operationName ? "::$operationName" : '');
10301025
} catch (Throwable $e) {
1031-
Craft::$app->getErrorHandler()->logException($e);
1026+
report($e);
10321027
$cacheKey = null;
10331028
}
10341029

@@ -1123,10 +1118,7 @@ private function _loadGqlDirectives(?GqlSchema $schema): array
11231118
$directiveClasses[] = ParseRefs::class;
11241119
}
11251120

1126-
if (
1127-
! Craft::$app->getConfig()->getGeneral()->disableGraphqlTransformDirective &&
1128-
in_array('directive:transform', $schema->scope)
1129-
) {
1121+
if (in_array('directive:transform', $schema->scope)) {
11301122
$directiveClasses[] = Transform::class;
11311123
}
11321124
}

src/Gql/Mutations/Asset.php

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
namespace CraftCms\Cms\Gql\Mutations;
66

7-
use Craft;
87
use CraftCms\Cms\Asset\Data\Volume;
98
use CraftCms\Cms\Gql\Arguments\Mutations\Asset as AssetMutationArguments;
109
use CraftCms\Cms\Gql\GqlHelper;
@@ -45,7 +44,7 @@ public static function getMutations(): array
4544
$mutationList['deleteAsset'] = [
4645
'name' => 'deleteAsset',
4746
'args' => ['id' => Type::nonNull(Type::int())],
48-
'resolve' => [Craft::createObject(AssetResolver::class), 'deleteAsset'],
47+
'resolve' => [new AssetResolver, 'deleteAsset'],
4948
'description' => 'Delete an asset.',
5049
'type' => Type::boolean(),
5150
];
@@ -59,7 +58,7 @@ public static function createSaveMutation(Volume $volume): array
5958
$mutationArguments = AssetMutationArguments::getArguments();
6059
$generatedType = AssetType::generateType($volume);
6160

62-
$resolver = Craft::createObject(AssetResolver::class);
61+
$resolver = new AssetResolver;
6362
$resolver->setResolutionData('volume', $volume);
6463

6564
static::prepareResolver($resolver, $volume->getCustomFields());

src/Gql/Mutations/Entry.php

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
namespace CraftCms\Cms\Gql\Mutations;
66

7-
use Craft;
87
use CraftCms\Cms\Entry\Data\EntryType as EntryTypeData;
98
use CraftCms\Cms\Field\Contracts\ElementContainerFieldInterface;
109
use CraftCms\Cms\Gql\Arguments\Mutations\Draft as DraftMutationArguments;
@@ -82,7 +81,7 @@ public static function getMutations(): array
8281
}
8382

8483
if ($createDeleteMutation || $createDraftMutations) {
85-
$resolver = Craft::createObject(EntryMutationResolver::class);
84+
$resolver = new EntryMutationResolver;
8685

8786
if ($createDeleteMutation) {
8887
$mutationList['deleteEntry'] = [
@@ -91,7 +90,7 @@ public static function getMutations(): array
9190
'id' => Type::nonNull(Type::int()),
9291
'siteId' => Type::int(),
9392
],
94-
'resolve' => [$resolver, 'deleteEntry'],
93+
'resolve' => $resolver->deleteEntry(...),
9594
'description' => 'Delete an entry.',
9695
'type' => Type::boolean(),
9796
];
@@ -127,7 +126,7 @@ public static function getMutations(): array
127126
'description' => 'The id of the creator of the draft.',
128127
],
129128
],
130-
'resolve' => [$resolver, 'createDraft'],
129+
'resolve' => $resolver->createDraft(...),
131130
'description' => 'Create a draft for an entry and return the draft ID.',
132131
'type' => Type::id(),
133132
];
@@ -146,7 +145,7 @@ public static function getMutations(): array
146145
'description' => 'Whether the draft is a provisional draft.',
147146
],
148147
],
149-
'resolve' => [$resolver, 'publishDraft'],
148+
'resolve' => $resolver->publishDraft(...),
150149
'description' => 'Publish a draft for the entry and return the entry ID.',
151150
'type' => Type::id(),
152151
];
@@ -171,7 +170,7 @@ public static function createSaveMutations(
171170
$generatedType = EntryType::generateType($entryType);
172171

173172
/** @var EntryMutationResolver $resolver */
174-
$resolver = Craft::createObject(EntryMutationResolver::class);
173+
$resolver = new EntryMutationResolver;
175174
$resolver->setResolutionData('entryType', $entryType);
176175
$resolver->setResolutionData('section', $section);
177176

@@ -237,7 +236,7 @@ public static function createSaveMutationsForField(
237236
$generatedType = EntryType::generateType($entryType);
238237

239238
/** @var EntryMutationResolver $resolver */
240-
$resolver = Craft::createObject(EntryMutationResolver::class);
239+
$resolver = new EntryMutationResolver;
241240
$resolver->setResolutionData('entryType', $entryType);
242241
$resolver->setResolutionData('field', $field);
243242

src/Gql/Resolvers/ElementResolver.php

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
namespace CraftCms\Cms\Gql\Resolvers;
66

7-
use Craft;
87
use craft\base\ElementInterface;
98
use CraftCms\Cms\Cms;
109
use CraftCms\Cms\Element\ElementCollection;
@@ -48,7 +47,7 @@ public static function resolveCount(mixed $source, array $arguments, ?array $con
4847
protected static function prepareElementQuery(mixed $source, array $arguments, ?array $context, ResolveInfo $resolveInfo): ElementQueryInterface|ElementCollection
4948
{
5049
/** @var ArgumentManager $argumentManager */
51-
$argumentManager = empty($context['argumentManager']) ? Craft::createObject(['class' => ArgumentManager::class]) : $context['argumentManager'];
50+
$argumentManager = empty($context['argumentManager']) ? new ArgumentManager : $context['argumentManager'];
5251
$arguments = $argumentManager->prepareArguments($arguments);
5352

5453
$fieldName = GqlHelper::getFieldNameWithAlias($resolveInfo, $source, $context);
@@ -92,7 +91,7 @@ protected static function prepareElementQuery(mixed $source, array $arguments, ?
9291
}
9392

9493
/** @var ElementQueryConditionBuilder $conditionBuilder */
95-
$conditionBuilder = empty($context['conditionBuilder']) ? Craft::createObject(['class' => ElementQueryConditionBuilder::class]) : $context['conditionBuilder'];
94+
$conditionBuilder = empty($context['conditionBuilder']) ? new ElementQueryConditionBuilder : $context['conditionBuilder'];
9695
$conditionBuilder->setResolveInfo($resolveInfo);
9796
$conditionBuilder->setArgumentManager($argumentManager);
9897

0 commit comments

Comments
 (0)