---
title: Don't add boolean arguments
date: 2024-05-03
permalink: daily/2024/05/03/dont-add-boolean-arguments
tags:
    - software-development
    - drupal
    - php
cta: ~
snippet: |
    Don't add boolean arguments to your methods.
---

A convention I like from the Laravel framework is to avoid adding boolean arguments to methods.

For example, if I have this function:

```php
public function getPosts() { ... }
```
If I wanted to only get published posts, one way would be to add a boolean argument:

```php
public function getPosts(boolean $onlyPublished) { ... }
```

Then, I'd need to use that within the method body to add another condition (this is referred to as control coupling, where one method affects another).

The non-boolean approach would be to create a separate method with its own distinct name.

For example, `getPosts()` could be named `getAllPosts()` and there could be a separate `getPublishedPosts()` method for only getting published posts:

```php
public function getAllPosts() { ... }

public function getPublishedPosts() { ... }
```
Whilst we have two methods now instead of one, it's much clearer what each does and there aren't any random `true` or `false`s wherever the method is used.