<?php
/**
 * Base Controller Class
 *
 * @package Easy_Invoice
 * @subpackage Controllers
 */

namespace EasyInvoice\Controllers;

use EasyInvoice\Traits\SecurityTrait;
use EasyInvoice\Traits\TemplateTrait;
use EasyInvoice\Traits\CurrencyTrait;
use EasyInvoice\Traits\InvoiceTrait;

/**
 * BaseController provides common functionality for all controllers
 */
abstract class BaseController {
    // Include all the traits
    use SecurityTrait;
    use TemplateTrait;
    use CurrencyTrait;
    use InvoiceTrait;
    
    /**
     * Initialize the controller
     * This method should be implemented by all child controllers
     */
    abstract public function init();
    
    /**
     * Display method to be implemented by child classes
     * This ensures all controllers have a standardized way to display content
     * 
     * @param array $args Optional arguments for the display
     */
    abstract public function display(array $args = []);
} 