/ Gists / PHP Patterns

Gists - PHP Patterns

On gists

2. Registry

PHP Patterns

pic.md #


On gists

3. Factory

PHP Patterns

AbstractFactory.php #

<?php

// INTERFACES
interface WriterFactory
{
    public function createCsvWriter(): CsvWriter;
    public function createJsonWriter(): JsonWriter;
}


interface CsvWriter
{
    public function write(array $line): string;
}


interface JsonWriter
{
    public function write(array $data, bool $formatted): string;
}

//  WRITTERS
class UnixCsvWriter implements CsvWriter
{
    public function write(array $line): string
    {
        return join(',', $line) . "\n";
    }
}


class WinCsvWriter implements CsvWriter
{
    public function write(array $line): string
    {
        return join(',', $line) . "\r\n";
    }
}


class UnixJsonWriter implements JsonWriter
{
    public function write(array $data, bool $formatted): string
    {
        $options = 0;

        if ($formatted) {
            $options = JSON_PRETTY_PRINT;
        }

        return json_encode($data, $options);
    }
}


class WinJsonWriter implements JsonWriter
{
    public function write(array $data, bool $formatted): string
    {


        return json_encode($data, JSON_PRETTY_PRINT);
    }
}


// FACTORIES
class UnixWriterFactory implements WriterFactory
{
    public function createCsvWriter(): CsvWriter
    {
        return new UnixCsvWriter();
    }

    public function createJsonWriter(): JsonWriter
    {
        return new UnixJsonWriter();
    }
}


class WinWriterFactory implements WriterFactory
{
    public function createCsvWriter(): CsvWriter
    {
        return new WinCsvWriter();
    }

    public function createJsonWriter(): JsonWriter
    {
        return new WinJsonWriter();
    }
}


// USAGE
$writeFactory = new WinWriterFactory();
$writerFactory->createJsonWriter(); // or $writerFactory->createCsvWriter()

On gists

4. Observe

PHP Patterns

pic.md #


On gists

5. Adapter

PHP Patterns

pic.md #


On gists

6. Strategy

PHP Patterns

image.md #


On gists

7. Prototype

PHP Patterns

pic.md #


On gists

8. Facade

PHP Patterns

pic.md #


On gists

9. Null Object

PHP Patterns

pic.md #


On gists

10. Repository

PHP Patterns

pic.md #


On gists

11. Decorator

PHP Patterns

pic.md #