PHP applications, usually manipulate data. In many cases, changes to one piece of data can affect many different parts of your application’s code. For example, the price of each product item displayed on an e-commerce site in the customer’s local currency is affected by the current exchange rate. Now, assume that each product item is represented by a PHP object that most likely originates from a database; the exchange rate itself is most probably being taken from a different source and is not part of the item’s database entry. Let’s also assume that each such object has a display() method that outputs the HTML relevant to this product.
The observer pattern allows for objects to register on certain events and/or data, and when such an event or change in data occurs, it is automatically notified. In this way, you could develop the product item to be an observer on the currency exchange rate, and before printing out the list of items, you could trigger an event that updates all the registered objects with the correct rate. Doing so gives the objects a chance to update themselves and take the new data into account in their display() method