Receber por email
← Voltar para o catálogo

php-modern

Write modern PHP 8.x code — typed properties, enums, readonly classes, match expressions, named arguments, union/intersection types, fibers, attributes, and constructor promotion. Use when writing PHP for Magento or any PHP 8.x project.

34estrelas
Atualizado há 5 meses

Ver no GitHub ↗ Licença: MIT

Como adicionar

/plugin marketplace add OrcaQubits/agentic-commerce-skills-plugins

O comando exato pode variar conforme o repositório. Confira o README no GitHub.

Para o autor da skill

Cole no README do seu repo

Mostra que sua skill está catalogada na Skillteca, gera backlink e tráfego rastreável.

[![Skillteca](https://www.skillteca.com.br/api/badge/php-modern/svg)](https://www.skillteca.com.br/skills/php-modern)

Alerta por categoria

Receba novas skills de Escrita e Conteúdo toda segunda

1 email curto, só com as skills novas de Escrita e Conteúdo. 4 minutos de leitura, sem spam, cancela com 1 clique.

Você confirma o email no primeiro envio. Sem spam. Cancela com 1 clique.

Ler descrição completa

Modern PHP 8.x Development

Before writing code

Fetch live docs: Web-search site:php.net manual migration for the latest PHP migration guide and new features. Check https://www.php.net/releases/ for current supported versions.

PHP 8.0 Features

Constructor Property Promotion

Declare and assign properties directly in the constructor signature — eliminates boilerplate. Heavily used in Magento service classes.

Named Arguments

Call functions with parameter names: array_slice(array: $arr, offset: 2). Improves readability for functions with many parameters.

Match Expressions

Type-safe switch replacement that returns a value. No fall-through, strict comparison. Better than switch for value mapping.

Union Types

int|string in parameter and return types. Allows multiple type declarations.

Nullsafe Operator

$obj?->method()?->property — short-circuits to null if any part is null. Replaces nested null checks.

Attributes

Native metadata annotations: #[Route('/path')], #[Override]. Replace docblock annotations with first-class language support.

PHP 8.1 Features

Enums

First-class enumerations — backed (string/int) and unit enums. Perfect for status codes, types, categories. Use backed enums for database/API values.

Readonly Properties

public readonly string $name — can only be set once (usually in constructor). Enforces immutability.

Fibers

Lightweight concurrency primitives — PHP-level coroutines. Foundation for async frameworks. Limited direct usage in Magento.

Intersection Types

TypeA&TypeB — value must satisfy ALL types. Useful for ensuring a parameter implements multiple interfaces.

First-class Callable Syntax

strlen(...) creates a Closure from a function. Cleaner than Closure::fromCallable('strlen').

PHP 8.2 Features

Readonly Classes

readonly class Dto { ... } — all properties are implicitly readonly. Perfect for Data Transfer Objects and value objects.

Deprecated: Dynamic Properties

Creating properties not declared in the class is deprecated. Magento core addressed this throughout — always declare properties.

Standalone Types

true, false, null as standalone types in declarations.

Constants in Traits

Traits can now define constants.

PHP 8.3 Features

Typed Class Constants

const string NAME = 'value'; — type-safe constants. Strengthens contract enforcement.

#[\Override] Attribute

Documents that a method intentionally overrides a parent method. Compiler error if the parent method doesn't exist.

json_validate() Function

Validate JSON without decoding — faster than json_decode + error check.

Dynamic Class Constant Fetch

$class::{$constant} — dynamic constant access.

PHP 8.4 Features

Property Hooks

Define get/set behavior directly on properties:

public string $name {
    set => strtolower($value);
    get => ucfirst($this->name);
}

Asymmetric Visibility

public private(set) string $name — readable publicly, writable only privately.

PHP for Magento Specifically

Type Safety

  • Use strict types: declare(strict_types=1); in all files
  • Type all parameters, return types, and properties
  • Use union types for nullable: ?string or string|null

Value Objects

Use readonly classes for DTOs and value objects — common in service layers.

Enums for Status Codes

Replace string/int constants with backed enums for order statuses, product types, etc.

Constructor Promotion in Magento

Magento uses constructor injection extensively — promotion reduces boilerplate significantly.

Best Practices

  • Always use declare(strict_types=1);
  • Type everything: parameters, returns, properties, constants
  • Use readonly for immutable data
  • Use enums instead of string/int constants
  • Use match instead of switch for value mapping
  • Use named arguments for clarity with many-parameter functions
  • Use #[\Override] when overriding parent methods
  • Follow PSR-12 coding style

Fetch php.net docs for exact syntax and behavior of new features before using them.

Compartilhar X LinkedIn