Skip to content

Instantly share code, notes, and snippets.

@HavenShen
Created May 17, 2018 08:28
Show Gist options
  • Save HavenShen/d3e635b3ad81dd3f6bf8cb88af0d57bd to your computer and use it in GitHub Desktop.
Save HavenShen/d3e635b3ad81dd3f6bf8cb88af0d57bd to your computer and use it in GitHub Desktop.
Single Responsibility Principle (SRP).
<?php
// Bad demo
$user = new User();
$user->create([]);
class User
{
public function create(array $data)
{
try {
// ...save user to datebase
} catch (DatabaseException $e) {
$this->logError($e->getMessage());
}
}
public function logError()
{
// ...write error to file
}
}
// Good demo
$logger = new Logger();
$user = new User($logger);
$user->create([]);
class User
{
protected $logger;
public function __construct(Logger $logger)
{
$this->logger = $logger;
}
public function create(array $data)
{
try {
// ...save user to datebase
} catch (DatabaseException $e) {
$this->logger->writeToFile($e->getMessage());
}
}
public function logError()
{
// ...write error to file
}
}
class Logger
{
public function writeToFile($message)
{
// ...write error to file
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment