<?php

/**
 * This file defines the PersistActor class.
 *
 * @package CGClientTickets
 * @category Application
 * @author  calguy1000 <calguy1000@cmsmadesimple.org>
 * @copyright Copyright 2014 by Robert Campbell
 */

namespace CGClientTickets\Actor;

/**
 * This abstract class defines the interface for actors that are responsibile for saving data objects in a persistent manner.
 *
 * @abstract
 */
abstract class PersistActor
{
    /**
     * Save the data object.
     *
     * @abstract
     * @param \CGClientTickets\DataObject $obj
     */
    abstract public function save(\CGClientTickets\DataObject $obj);

    /**
     * Delete the data object.
     *
     * @abstract
     * @param \CGClientTickets\DataObject $obj
     */
    abstract public function delete(\CGClientTickets\DataObject $obj);

    /**
     * Load the data object, given an id.
     *
     * @abstract
     * @param int $id
     */
    abstract public function load_by_id($id);

    /**
     * After saving a data object, get the id of the newly saved object.
     *
     * @abstract
     * @return int
     */
    abstract public function get_saved_id();
} // end of class

?>
