Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message
Php Examples Named Arguments
Php Examples Named Arguments
pekral/arch-app-services
cursor
named-arguments
readability
method-signatures
value-objects
dto
api-contracts

Prefer:

Install
php artisan boost:add-skill pekral/arch-app-services

Save this content to: .cursor/rules/php/examples/named-arguments.md

# Named Arguments Examples

### Good: named arguments clarify unclear scalar values

```php
Http::retry(times: 3, sleepMilliseconds: 100);
```

```php
Str::limit(
    value: $description,
    limit: 160,
    end: '...',
);
```

```php
Cache::put(
    key: $cacheKey,
    value: $result,
    ttl: now()->addMinutes(10),
);
```

### Good: named arguments make boolean flags readable

```php
$report->export(
    format: 'csv',
    includeHeader: true,
    compress: false,
);
```

### Good: named arguments make nullable values explicit

```php
$userService->updateProfile(
    user: $user,
    displayName: $displayName,
    avatarPath: null,
);
```

### Good: named arguments help with repeated scalar types

```php
$invoice->applyDiscount(
    amount: 500,
    currency: 'CZK',
    reason: 'loyalty_discount',
);
```

### Avoid: obvious single-argument calls

```php
$userRepository->find(id: $id);
```

Prefer:

```php
$userRepository->find($id);
```

### Avoid: named arguments do not fix bad method design

```php
$action(
    userId: $user->id,
    productId: $product->id,
    quantity: 2,
    sendEmail: true,
    priority: 'high',
    source: 'admin',
);
```

Prefer DTO/value object:

```php
$action(new CreateOrderData(
    userId: $user->id,
    productId: $product->id,
    quantity: 2,
    sendEmail: true,
    priority: 'high',
    source: 'admin',
));
```

### Avoid: do not reorder arguments just because PHP allows it

```php
Str::limit(
    end: '...',
    value: $description,
    limit: 160,
);
```

Prefer keeping the original signature order:

```php
Str::limit(
    value: $description,
    limit: 160,
    end: '...',
);
```

### Avoid: public API parameter names become part of the contract

```php
// Risky for public package APIs:
// Renaming $sleepMilliseconds later would break users calling it by name.
Http::retry(times: 3, sleepMilliseconds: 100);
```

Named Arguments Examples

Good: named arguments clarify unclear scalar values

Http::retry(times: 3, sleepMilliseconds: 100);
Str::limit(
    value: $description,
    limit: 160,
    end: '...',
);
Cache::put(
    key: $cacheKey,
    value: $result,
    ttl: now()->addMinutes(10),
);

Good: named arguments make boolean flags readable

$report->export(
    format: 'csv',
    includeHeader: true,
    compress: false,
);

Good: named arguments make nullable values explicit

$userService->updateProfile(
    user: $user,
    displayName: $displayName,
    avatarPath: null,
);

Good: named arguments help with repeated scalar types

$invoice->applyDiscount(
    amount: 500,
    currency: 'CZK',
    reason: 'loyalty_discount',
);

Avoid: obvious single-argument calls

$userRepository->find(id: $id);

Prefer:

$userRepository->find($id);

Avoid: named arguments do not fix bad method design

$action(
    userId: $user->id,
    productId: $product->id,
    quantity: 2,
    sendEmail: true,
    priority: 'high',
    source: 'admin',
);

Prefer DTO/value object:

$action(new CreateOrderData(
    userId: $user->id,
    productId: $product->id,
    quantity: 2,
    sendEmail: true,
    priority: 'high',
    source: 'admin',
));

Avoid: do not reorder arguments just because PHP allows it

Str::limit(
    end: '...',
    value: $description,
    limit: 160,
);

Prefer keeping the original signature order:

Str::limit(
    value: $description,
    limit: 160,
    end: '...',
);

Avoid: public API parameter names become part of the contract

// Risky for public package APIs:
// Renaming $sleepMilliseconds later would break users calling it by name.
Http::retry(times: 3, sleepMilliseconds: 100);
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
shitoudev/permissionmanager
johannesclimacus/laravel-tui
hocvt/seotools
vitalybaev/sypexgeo
amphibee/themosis-ignition
gito-me/fast-excel
frankyso/laravel-ipaymu
geolize-studio/laravel-chile
boomerangui/chat
cgv/localized-resource
noith/settings
kda/laravel-package
kda/filament-dynamic-navigation
bypersoft/signbox
pairus/product-data
fayne/laravel-filament-cms-core