6. OOP Standards
Classes and Objects:
-
Follow the Single Responsibility Principle (SRP)
-
Encapsulate class properties.
// Good class User { private $name; public function getName() { return $this->name; } }
// Bad
class User
{
public $name;
function getName()
{
return $this->name;
}
}
#### Inheritance and Interfaces:
- Use inheritance to extend functionality.
- Implement interfaces to define contracts.
```php
// Good
interface UserInterface
{
public function getName();
}
class User implements UserInterface
{
public function getName()
{
return $this->name;
}
}
// Bad
class User
{
public function getName()
{
return $this->name;
}
}
Traits:
Use traits to reuse code across multiple classes.
// Good
trait Loggable
{
public function log($message)
{
echo $message;
}
}
class User
{
use Loggable;
}
// Bad
class User
{
public function log($message)
{
echo $message;
}
}
Abstract Classes:
Use abstract classes for shared functionality that should not be instantiated.
// Good
abstract class Shape
{
abstract public function getArea();
}
class Circle extends Shape
{
public function getArea()
{
return 3.14 * $this->radius * $this->radius;
}
}
// Bad
class Circle
{
public function getArea()
{
return 3.14 * $this->radius * $this->radius;
}
}
Design Patterns:
Implement common design patterns (e.g., Singleton, Factory, Strategy).
// Good (Singleton)
class Database
{
private static $instance;
private function __construct() {}
public static function getInstance()
{
if (self::$instance === null) {
self::$instance = new self();
}
return self::$instance;
}
}
// Bad
class Database
{
public function __construct() {}
}