What are some best practices for minimizing code duplication when working with classes in PHP?

Code duplication in classes can be minimized by using inheritance and composition. By creating a base class with shared functionality and extending it in subclasses, you can avoid repeating the same code in multiple places. Additionally, using composition allows you to encapsulate reusable code in separate classes and inject them into your main class when needed.

// Base class with shared functionality
class BaseClass {
    public function sharedMethod() {
        // Shared code here
    }
}

// Subclass extending BaseClass
class SubClass extends BaseClass {
    // Subclass-specific code here
}

// Class using composition
class MainClass {
    private $helper;

    public function __construct(HelperClass $helper) {
        $this->helper = $helper;
    }

    public function doSomething() {
        $this->helper->help();
    }
}

// Helper class with reusable functionality
class HelperClass {
    public function help() {
        // Reusable code here
    }
}

$helper = new HelperClass();
$main = new MainClass($helper);
$main->doSomething();