Skip to content
Back to skills

Php Language

ASecurity

Apply core PHP language standards and modern 8.x features. Use when working with PHP 8.x features like enums, fibers, readonly properties, or named arguments.

  • 549 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added June 6, 2026
developmentphpexpress

Security analysis

A100/100

Pro scans all 3 files and shows the line behind each finding

Scanned June 6, 2026

npx -y skills add HoangNguyen0403/agent-skills-standard --skill php-language --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Php Language?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Php Language
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/hoangnguyen0403-php-language/badge)](https://www.skillsdirectory.com/skills/hoangnguyen0403-php-language)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: php-language
description: Apply core PHP language standards and modern 8.x features. Use when working with PHP 8.x features like enums, fibers, readonly properties, or named arguments.
metadata:
  triggers:
    files:
    - '**/*.php'
    keywords:
    - declare
    - readonly
    - match
    - constructor
    - promotion
    - types
---
# PHP Language Standards

## **Priority: P0 (CRITICAL)**

## Structure

```text
src/
└── {Namespace}/
    └── {Class}.php
```

## Implementation Guidelines

### Core Language Standards

- **Strict Typing**: Declare **`declare(strict_types=1);`** at very top of every file.
- **Type Hinting**: Apply scalar type hints (e.g., `string`, `int`) and return types to all functions.
- **Strict Comparison**: **Avoid loose `==` comparison**; always use `===` for strict equality.

### Modern PHP 8+ Patterns

- **Match Expressions**: Prefer **`match($status)`** over `switch` for value returns. It provides strict comparison and exhaustive by default.
- **Default Case**: Use **`default => throw new InvalidArgumentException($status)`** to handle unknown states.
- **Read-only**: Use **`public readonly string $name`** for properties set once at construction.
- **Property Promotion**: Use **`public function __construct(public string $name) {}`** to reduce boilerplate.
- **Named Arguments**: Call functions with **`name: 'John', age: 25`** to skip optional parameters.
- **Flexible Types**: Use **Union types (`int|string`)** and **Intersection types (`Countable&Traversable`)**.

## Anti-Patterns

- **No untyped functions**: Declare return and parameter types always.
- **No loose `==` comparison**: Use `===` for strict equality.
- **No `switch` for value mapping**: Use `match` expressions instead.
- **No global namespace logic**: Organize in classes and namespaces.

## References

- [Modern PHP Patterns](references/implementation.md)

Files in this skill

  • SKILL.md1.9 KB
  • evals/evals.json3.2 KB
  • references/implementation.md790 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.