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

---
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/uiyevxwea
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/uiyevxwea
og:image: https://api.daily.dev/og/posts/UIyeVXweA.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

**[YoanDev](https://daily.dev/sources/yoandev)** · [@yoanbernabeu](https://daily.dev/yoanbernabeu) · 7 upvotes · 1 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>

## Community discussion

Top comments from developers on daily.dev.

**@wizatek60** · 0 upvotes

> Stop saying to stop doing things.
> Just because one method is safer doesn't mean the other method is wrong.
> Its perfectly fine to pass arrays as much as you like

## Similar posts on daily.dev

- [Don’t just attend KubeCon \+ CloudNativeCon, Merge Forward your experience\!](https://daily.dev/posts/don-t-just-attend-kubecon-cloudnativecon-merge-forward-your-experience--l0rpp73x8) · CNCF · 1 upvotes · 0 comments
- [Announcing H2 2026 KCDs](https://daily.dev/posts/announcing-h2-2026-kcds-m96goajm1) · CNCF · 1 upvotes · 0 comments
- [Two months of Open Community Groups](https://daily.dev/posts/two-months-of-open-community-groups-asf52zhbs) · CNCF · 0 upvotes · 0 comments
- [CNCF Unveils Schedule for KubeCon \+ CloudNativeCon Europe 2026](https://daily.dev/posts/cncf-unveils-schedule-for-kubecon-cloudnativecon-europe-2026-ikhcoa5cb) · CNCF · 2 upvotes · 0 comments
- [CNCF Debuts KubeCon \+ CloudNativeCon Japan 2026 Schedule](https://daily.dev/posts/cncf-debuts-kubecon-cloudnativecon-japan-2026-schedule-xp5pyudub) · CNCF · 1 upvotes · 0 comments

---

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

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

```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/uiyevxwea","headline":"PHP: Stop Passing Arrays Everywhere","text":"Shared: PHP: Stop Passing Arrays Everywhere","url":"https://daily.dev/posts/uiyevxwea","datePublished":"2026-01-29T12:32:31.928Z","dateModified":"2026-01-29T12:32:31.930Z","author":{"@type":"Person","name":"Yoan Bernabeu","url":"https://daily.dev/yoanbernabeu","image":"https://media.daily.dev/image/upload/s--ox95pr1p--/f_auto/v1763556032/avatars/avatar_wwNVESM7KfzvqEX8nF32P?_a=BAMAK+ZW0","description":"Content creator, trainer, and solutions provider for the web.","interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"EndorseAction"},"userInteractionCount":510}},"image":"https://media.daily.dev/image/upload/s--0_ODbtD2--/f_auto/v1722860399/public/Placeholder%2008","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":7},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":1}],"sharedContent":{"@type":"WebPage","url":"https://api.daily.dev/r/fWbwWfeDD"},"comment":[{"@type":"Comment","text":"Stop saying to stop doing things.\nJust because one method is safer doesn’t mean the other method is wrong.\nIts perfectly fine to pass arrays as much as you like","datePublished":"2026-01-30T20:15:09.324Z","url":"https://daily.dev/posts/UIyeVXweA#c-5t9kNulDJ","author":{"@type":"Person","name":"Wiza tek","url":"https://daily.dev/wizatek60","image":"https://lh3.googleusercontent.com/a/ACg8ocKU7tkNjNYiDlESROAD30oyaW1OCBb1M0nDF-qEiATFOA8KF2o=s96-c"}}],"isPartOf":{"@type":"WebPage","url":"https://daily.dev/squads/yoandev","name":"YoanDev"}}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"YoanDev","item":"https://daily.dev/squads/yoandev"},{"@type":"ListItem","position":3,"name":"PHP: Stop Passing Arrays Everywhere"}]}
```

