<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/0e8fo1xhk" -->

---
title: PHP: Stop Passing Arrays Everywhere | daily.dev
description: Passing arrays as data structures in PHP is an anti-pattern that creates structural debt. Modern PHP (8.x+) provides readonly value objects, enums, promoted...
canonical: https://daily.dev/posts/0e8fo1xhk
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: PHP: Stop Passing Arrays Everywhere | daily.dev
og:description: Passing arrays as data structures in PHP is an anti-pattern that creates structural debt. Modern PHP (8.x+) provides readonly value objects, enums, promoted...
og:url: https://daily.dev/posts/0e8fo1xhk
og:image: https://api.daily.dev/og/posts/0e8fO1XHK.png
og:image:alt: Post cover image
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# PHP: Stop Passing Arrays Everywhere

**[PHP Dev](https://daily.dev/sources/phpdev)** · [@damienseguy](https://daily.dev/damienseguy) · 7 upvotes · 0 comments

## Summary

Passing arrays as data structures in PHP is an anti-pattern that creates structural debt. Modern PHP (8.x+) provides readonly value objects, enums, promoted constructors, and strict typing that make explicit data contracts superior to arrays. Arrays allow invalid states and rely on comments, while objects enforce invariants and fail early. When array-shape PHPDocs need more than 3 keys, create an object instead. Keep arrays at system boundaries (HTTP, JSON, database), convert once to objects, and never pass raw arrays deeper into the codebase. PHPStan becomes a design tool that makes invalid states unrepresentable. This approach isn't overengineering—it's professionalism that reduces bugs and makes refactoring mechanical rather than archaeological.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://dev.to/suckup_de/php-stop-passing-arrays-everywhere-45f1>

## Similar posts on daily.dev

- [Constrain your classes with PHPStan](https://daily.dev/posts/constrain-your-classes-with-phpstan-s6dcepwbf) · hbgl · 2 upvotes · 0 comments
- [Mastering Value Objects in PHP 8.5\+ \(2026 Edition\)](https://daily.dev/posts/mastering-value-objects-in-php-8-5-2026-edition--lxspcwxig) · CodeCraft Diary · 2 upvotes · 3 comments
- [Immutability in PHP Beyond readonly](https://daily.dev/posts/immutability-in-php-beyond-readonly-e2zuz4sl6) · W endell Adriel · 13 upvotes · 1 comments

---

Tags: [#architecture](https://daily.dev/tags/architecture), [#php](https://daily.dev/tags/php)

[View this post on daily.dev](https://daily.dev/posts/0e8fo1xhk)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"DiscussionForumPosting","mainEntityOfPage":"https://daily.dev/posts/0e8fo1xhk","headline":"PHP: Stop Passing Arrays Everywhere","text":"Shared: PHP: Stop Passing Arrays Everywhere","url":"https://daily.dev/posts/0e8fo1xhk","datePublished":"2026-01-28T09:45:30.282Z","dateModified":"2026-01-28T09:45:30.287Z","author":{"@type":"Person","name":"Damien seguy","url":"https://daily.dev/damienseguy","image":"https://media.daily.dev/image/upload/s--nPbjKqol--/f_auto,q_auto/v1698422671/avatars/avatar_G85JhYcDxAg024Omc8Rlp","description":"PHP developer passionate about deep language knowledge, testing, static analysis, and sustainable it","worksFor":{"@type":"Organization","name":"Exakat","logo":"https://media.daily.dev/image/upload/s--ibtl6fze--/f_auto/v1749051132/companies/exakat"},"interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"EndorseAction"},"userInteractionCount":38010}},"image":"https://media.daily.dev/image/upload/s--1KxV4ohY--/f_auto/v1722860400/public/Placeholder%2007","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":7},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"sharedContent":{"@type":"WebPage","url":"https://api.daily.dev/r/fWbwWfeDD"},"isPartOf":{"@type":"WebPage","url":"https://daily.dev/squads/phpdev","name":"PHP Dev"}}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"PHP Dev","item":"https://daily.dev/squads/phpdev"},{"@type":"ListItem","position":3,"name":"PHP: Stop Passing Arrays Everywhere"}]}
```

