askill
php

phpSafety 92Repository

Write modern PHP with generators, SPL, and PHP 8+ features. Use for PHP development or optimization.

74 stars
1.5k downloads
Updated 2/27/2026

Package Files

Loading files...
SKILL.md

PHP Development

Write modern, performant PHP code.

When to use

  • Writing PHP code
  • PHP 8+ features
  • Performance optimization
  • Laravel/Symfony development

Modern PHP patterns

Type system (PHP 8+)

// Union types
function process(int|string $id): array|false {
    // ...
}

// Constructor property promotion
class User {
    public function __construct(
        public readonly string $name,
        public readonly string $email,
        private ?int $age = null,
    ) {}
}

// Enums
enum Status: string {
    case Pending = 'pending';
    case Active = 'active';
    case Completed = 'completed';
}

// Match expression
$result = match($status) {
    Status::Pending => 'Waiting',
    Status::Active => 'In Progress',
    Status::Completed => 'Done',
};

Generators

// Memory-efficient iteration
function readLargeFile(string $path): Generator {
    $handle = fopen($path, 'r');
    while (($line = fgets($handle)) !== false) {
        yield trim($line);
    }
    fclose($handle);
}

// Usage
foreach (readLargeFile('huge.csv') as $line) {
    processLine($line);
}

// Generator with keys
function parseCSV(string $path): Generator {
    $handle = fopen($path, 'r');
    $headers = fgetcsv($handle);
    while (($row = fgetcsv($handle)) !== false) {
        yield array_combine($headers, $row);
    }
    fclose($handle);
}

SPL data structures

// Priority queue
$queue = new SplPriorityQueue();
$queue->insert('low', 1);
$queue->insert('high', 10);
$queue->insert('medium', 5);

while (!$queue->isEmpty()) {
    echo $queue->extract(); // high, medium, low
}

// Fixed array (memory efficient)
$arr = new SplFixedArray(1000);
$arr[0] = 'value';

Error handling

// Custom exceptions
class ValidationException extends Exception {
    public function __construct(
        public readonly string $field,
        string $message,
    ) {
        parent::__construct($message);
    }
}

// Try-catch with multiple types
try {
    process($data);
} catch (ValidationException $e) {
    log("Validation failed: {$e->field}");
} catch (RuntimeException $e) {
    log("Runtime error: {$e->getMessage()}");
} finally {
    cleanup();
}

Attributes (PHP 8)

#[Attribute(Attribute::TARGET_METHOD)]
class Route {
    public function __construct(
        public string $path,
        public string $method = 'GET',
    ) {}
}

class Controller {
    #[Route('/users', 'GET')]
    public function listUsers(): array {
        // ...
    }
}

Best practices

  • Use strict types: declare(strict_types=1);
  • Follow PSR-12 coding standard
  • Use Composer for autoloading
  • Prefer built-in functions over custom
  • Use generators for large datasets

Examples

Input: "Optimize this PHP code" Action: Profile with Xdebug, use generators, leverage SPL structures

Input: "Modernize to PHP 8" Action: Add type hints, use match/enums, constructor promotion

Install

Download ZIP
Requires askill CLI v1.0+

AI Quality Score

72/100Analyzed 3/1/2026

Good technical reference for modern PHP development with comprehensive code examples for PHP 8+ features, generators, and SPL. Has clear "when to use" section and well-structured examples. Slightly limited in scope (no testing, debugging, deployment guidance) and lacks tags for discoverability. Path suggests archive location but content is generic and reusable.

92
82
78
65
75

Metadata

Licenseunknown
Version-
Updated2/27/2026
Publisherhtlin222

Tags

No tags yet.