Welcome Guest, Not a member yet? Register   Sign In
Schedule algorithm
#1

[eluser]juan1904[/eluser]
Hi,

I'm working on a schedule algorithm for a hockeyleague and I'm almost done, but there is something that bugs me and keeps me awake at nights!

In my code I use require once 'blah.php'; to create different instances of a class called Schedule_team like this:
Quote:$arr = array();
foreach($team_array as $ta)
{
$arr[] = new Schedule_team($ta['name'])
}

$team_array is an array with some information about every team.

Schedule_team holds information about how many times a team has met the others.

I wonder if there is any smart way to get around this "require once" and "new Scheldule_team();" problem of mine.
#2

[eluser]Pascal Kriete[/eluser]
How about a factory?
Code:
class Schedule_team
{
    // Stores objects
    private static $_teams = array();
    
    // Regular class variables
    public $name;
    
    // Constructor - factory does most of the work
    public function __construct() {}
    
    // Factory
    public static function factory($name)
    {
        if ( ! isset(Schedule_team::$_teams[$name]))
        {
            $team = new Schedule_team();
            $team->name = $name;

            Schedule_team::$_teams[$name] = $team;
        }
        else
        {
            $team = Schedule_team::$_teams[$name];
        }
        
        return $team;
    }
}

Make that a library, and use it:
Code:
$this->load->library('schedule_team');

$a = Schedule_team::factory('ateam');
$b = Schedule_team::factory('bteam');

echo $a->name, ' ', $b->name;

In it's current form it will also return a team if you already have on of the same name. Depending on how complex this class is you may want to separate the factory from the actual schedule_team class.




Theme © iAndrew 2016 - Forum software by © MyBB