Skip to content
Novus Examples
php1.1 KB

PHP — Invoice (enum, class, promoted properties)

A realistic modern-PHP snippet with strict types, a namespace, a backed enum, a final class with constructor-promoted readonly properties, and array_reduce with an arrow function — for testing highlighters, PHPStan, and parsers.

Preview — first 45 linesphp
<?php
// A small invoice model: a backed enum, a final class with typed
// promoted properties, a method, and array_reduce.
declare(strict_types=1);

namespace App\Billing;

enum Status: string
{
    case Draft = 'draft';
    case Sent = 'sent';
    case Paid = 'paid';
}

final class Invoice
{
    /** @var array<int, array{name: string, qty: int, unit: float}> */
    private array $lines = [];

    public function __construct(
        public readonly string $number,
        public Status $status = Status::Draft,
    ) {}

    public function addLine(string $name, int $qty, float $unit): void
    {
        $this->lines[] = ['name' => $name, 'qty' => $qty, 'unit' => $unit];
    }

    public function total(): float
    {
        return array_reduce(
            $this->lines,
            fn(float $sum, array $line): float => $sum + $line['qty'] * $line['unit'],
            0.0,
        );
    }
}

$invoice = new Invoice('INV-0001', Status::Sent);
$invoice->addLine('Design work', 3, 120.0);
$invoice->addLine('Hosting', 12, 8.5);

printf("%s (%s): $%.2f\n", $invoice->number, $invoice->status->value, $invoice->total());

Specifications

Language
PHP
Kind
realistic snippet
Lines
44
Encoding
UTF-8
Line Endings
LF

Testing contract

Expected to pass
Scenario
Run the file under PHP 8.1+ and check the formatted total it prints.
Expected result
It prints `INV-0001 (sent): $462.00` - three units at 120.00 plus twelve at 8.50. It requires PHP 8.1 or later: `enum Status: string` is a backed enum, the constructor uses promoted `readonly` properties, and `declare(strict_types=1)` means passing an int where a float is declared is a TypeError rather than a silent coercion.

What is a .php file?

PHP (.php) is a plain-text source file for the PHP language — a dynamically typed, server-side scripting language designed for web development, embeddable in HTML. Modern PHP supports classes, namespaces, type declarations, and closures, and powers a large share of web back-ends and CMS platforms.

How to use this file

Use an example .php file to test syntax highlighters, the PHP interpreter and linters (PHP_CodeSniffer, PHPStan), formatters, and parser or language-detection tooling.

How to use this file for testing

“PHP — Invoice (enum, class, promoted properties)” is a deterministic Novus Examples fixture for Syntax highlighting, Code parsing, Editor testing. Idiomatic hello-world programs and realistic snippets across sixteen languages, exercising comments, string escapes, interpolation, numeric literals, and language keywords — for testing syntax highlighters, editor themes, and tree-sitter grammars.

Documented properties for this file: PHP · UTF-8 · LF. Compare results against paired or grouped companions on this page when present (clean↔damaged, searchable↔scanned, or format twins) so scores stay reproducible across runs.

Download the file once, keep the path stable in CI or local scripts, and treat the spec table as the contract: dimensions, seeds, field lists, and roles are intentional. Corrupt or invalid samples are labelled as such — expect parsers to fail loudly rather than silently accept them.

This is a short, known-correct source file. Run it through your syntax highlighter, linter, formatter, tree-sitter grammar, or parser, and open it in the in-browser editor to tweak and re-download. Each snippet exercises comments, string escapes, literals, and language keywords.

Code examples

php invoice.php

Generated by generation/code_samples.py. Free for any use, no attribution required — license.