php

Write modern, performant PHP code.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "php" with this command: npx skills add htlin222/dotfiles/htlin222-dotfiles-php

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

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

devops

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

python

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

code-review

No summary provided by upstream source.

Repository SourceNeeds Review