# What is written (Markdown) => what must be heard, with | between acceptable hearings. See check.py.

# Currency codes that are something else in technical writing.
Requires PHP 8 or later. => PHP 8
PHP 7.4 reached end of life. => PHP 7.4
The code is under a BSD 3 clause license. => BSD 3
It stores a CRC 32, not a hash. => CRC 32
Fixed in CVE-2024-3094. => CVE 2024 3094

# Sums of money are still money.
The fee is PHP 500. => 500 Philippine pesos | PHP 500
It costs USD 8 a month. => 8 United States dollars | 8 US dollars | USD 8

# Other rewrites in speech.speakable.
Try a cache, e.g. Redis. => for example
Go from a → b. => from a to b
It takes ~3 seconds. => about 3 seconds

# Inline code, read the way a person reads code aloud (speech.spoken_code).
Wrap it in `array_values` to get a clean list. => array values
Use `str_contains` and `mb_strlen` on names. => string contains and MB string length | string contains and M B string length
Read `$guest->email` from the model. => guest arrow email
Sort with `usort` and the `<=>` operator. => U sort and the spaceship operator | you sort and the spaceship operator
Call `Str::slug` on the name. => string double colon slug
Compare with `===`, never `==`. => identical, never equal

# Code blocks, read line by line (speech.spoken_line).
```php\n'1' == 1;   // true: the string is converted\n``` => the string 1 is equal to 1, true: the string is converted
```php\nforeach ($list as &$item) {\n``` => for each list as by reference item
```php\n$all = [...$airbnb, ...$booking];\n``` => all equals array of unpack airbnb, unpack booking
```php\n$label = ['airbnb' => 'Airbnb'];   // the channel's display name\n``` => double arrow

# Found by reading laravel/framework right through with corpus.py.
```php\n * @param  array|string  $columns  The columns to select.\n``` => parameter array or string, columns, the columns to select
```php\n * @return \Illuminate\Contracts\Auth\Authenticatable|null\n``` => returns illuminate contracts auth authenticatable or null | returns illuminate contracts orth authenticatable or null
```php\n$this->beforeCallbacks[] = $callback;\n``` => before callbacks append callback | before callbacks a penned callback
```php\nreturn $request->expectsJson() ? null : $this->redirectTo($request);\n``` => expects JSON then null else | expects Jason then null else
```php\npublic function withScheme(Stringable|string $scheme): static\n``` => stringable or string scheme colon static
```php\n#[AsCommand(name: 'make:cast')]\n``` => attribute as command name colon make colon cast
```php\n<?php\n``` => PHP open tag
```php\n$query->where('votes', '>=', 100);\n``` => votes, greater than or equal to, 100
```php\nif ($p instanceof Arrayable) {\n``` => if p instance of array able
```php\nRoute::middleware(['web', 'auth:sanctum'])->group(base_path('routes/web.php'));\n``` => auth colon sanctum arrow group base path routes slash web dot PHP | orth colon sanctum arrow group base path routes/web.php | auth colon sanctum arrow group base path routes/web.php
```php\n * @var \Illuminate\Contracts\Foundation\Application\n``` => var illuminate contracts foundation application
```php\n$items = collect($data)->map(fn ($item) => $item->toArray())->filter()->values();\n``` => map arrow function item returns item arrow to array arrow filter arrow values | map arrow function item returns item arrow 2 array arrow filter arrow values
```php\n$user = User::query()->where('email', $email)->firstOrFail();\n``` => user equals user double colon query arrow where email, email arrow first or fail
```php\n$config['client_options'] ?? [],\n``` => config client options null coalescing empty array
```php\nuse Illuminate\Database\Eloquent\Attributes\UsePolicy;\n``` => use illuminate database eloquent attributes use policy
```php\n$sql = "select * from users where id = ?";\n``` => id = question mark | id equals question mark
```php\nreturn (new Collection($this->extractChannelKeys($pattern, $channel)))\n``` => return new collection this arrow extract channel keys pattern, channel
```php\nreturn Attribute::get(fn () => (int) $this->check_in->diffInDays($this->check_out));\n``` => get arrow function returns cast to int this arrow check in arrow diff in days this arrow check out
