# Operators

Operators allow you to change something about the Money and will return a new instance of the Money. For example, the methods: add, subtract, multiply, and divide on the `Money` class are all MoneyOperators.

You can create your own Money Operators and use them with the Money class out of the box.

```php
<?php
$operator = new MyOwnMoneyOperator();
$newMoney = $money->with($operator);
```

Here's how it works in slightly more detail.

```php
<?php
use SonsOfPHP\Component\Money\Operator\Money\AddMoneyOperator;
use SonsOfPHP\Component\Money\Money;

$accountBalance = Money::USD(1000);
$depositAmount  = Money::USD(2000);

// The construct takes the deposit amount we will apply to the balance
$operator = new AddMoneyOperator($depositAmount);

// The operator will apply (the deposit amount) to the account balance
// and the returned MoneyInterface will be a new object
$newBalance = $operator->apply($accountBalance);

$newBalance->isEqualTo($accountBalance); // will return false

// Another way to use the Operator is
$anotherNewBalance = $accountBalance->with($operator);

$newBalance->isEqualTo($anotherNewBalance); // will return true

// Even though $newBalance and $anotherNewBalance are different objects, they
// are both USD and both have the same amount (3000)
```

As you can see, using Operators provides you some power. You could create your Operator to calculate a payment amount for a loan. Another great idea is to use an Operator that can calculate tax.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.sonsofphp.com/components/money/operators.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
