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

18.3. Code Example

The e-commerce website has expanded. Visitors to the website can now order many new items, including cases of cereal endorsed by the band. Who knew that these would be in high demand! Now, you can create classes that can hold the price for themselves as well as add tax. You used to be able to apply a flat tax — but now with food sales — each class has to hold the tax for itself. Additionally, some items are pretty large. For example, some of the cases of product require a premium to cover handling. This is added to the final purchase price.

This particular example will differ from most by having more structure. Generally, the simplest version of a class demonstrating a design pattern is created. Best practices, such as enforcing access using interfaces, are generally skipped. However, for this particular design pattern, the controls are so strongly specified that I thought it would be best to illustrate it with a more structured approach using abstract classes and methods.

The first step is to define a base class using the Template Design Pattern to process any of the sale items:

abstract class SaleItemTemplate
{
    public $price = 0;

    public final function setPriceAdjustments()
    {
        $this->price += $this->taxAddition();
        $this->price += $this->oversizedAddition();
    }

    protected function oversizedAddition()
    {
        return 0;
    }

    abstract protected function taxAddition();
}

The SaleItemTemplate is a simple class. It is an abstract class, so it enforces the requirement to be ...

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