Skip to Content
Professional PHP Design Patterns
book

Professional PHP Design Patterns

by Aaron Saray
August 2009
Intermediate to advanced
281 pages
6h 50m
English
Wrox
Content preview from Professional PHP Design Patterns

12.3. Code Example

The example website allows bands to come in and manage their music collection. It also allows them to update their profile, change information about their band, and update their CD information. Recently, artists were allowed to upload a collection of MP3s as well as ship CDs from the website. Because of this, the website needs to keep CDs and their MP3 counterparts in sync with each other.

The initial version of the website allowed the band to change its band name from the profile page or from an individual CD itself. The CD object had a method that would accept the band change and update it in the database:

class CD
{
    public $band = '';
    public $title = '';

    public function save()
{
        //stub - writes data back to database - use this to verify
        var_dump($this);
    }

    public function changeBandName($newName)
    {
        $this->band = $newName;
        $this->save();
    }
}

This simple class just demonstrates that the CD object can have a band and title. Then, the function changeBandName() takes a new band name parameter. It sets it in the object and then calls the save() method. For demonstration purposes, the save() method is just a stub. You dump the instance to verify that the changes have been made.

With the addition of our MP3 archive, another similar object needs to be created to work with that archive. The artist must also be able to change their band name on the MP3 archive page. The band name must also then change in the CD that is associated with it.

The Mediator Design Pattern ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

Design Patterns in PHP and Laravel

Design Patterns in PHP and Laravel

Kelt Dockins
Magento 2 Theme Design - Second Edition

Magento 2 Theme Design - Second Edition

Fernando J Miguel, Richard Carter
PHP 7: Real World Application Development

PHP 7: Real World Application Development

Doug Bierer, Altaf Hussain, Branko Ajzele

Publisher Resources

ISBN: 9780470496701Purchase book