array( 'Acl', 'Action', 'Authentication', 'Board', 'Budget', 'Category', 'Color', 'Comment', 'Config', 'Currency', 'DateParser', 'File', 'HourlyRate', 'LastLogin', 'Link', 'Notification', 'Project', 'ProjectActivity', 'ProjectAnalytic', 'ProjectDuplication', 'ProjectDailySummary', 'ProjectIntegration', 'ProjectPermission', 'Subtask', 'SubtaskExport', 'SubtaskForecast', 'SubtaskTimeTracking', 'Swimlane', 'Task', 'TaskCreation', 'TaskDuplication', 'TaskExport', 'TaskFinder', 'TaskFilter', 'TaskLink', 'TaskModification', 'TaskPermission', 'TaskPosition', 'TaskStatus', 'TaskValidator', 'Timetable', 'TimetableDay', 'TimetableExtra', 'TimetableWeek', 'TimetableOff', 'Transition', 'User', 'UserSession', 'Webhook', ), 'Core' => array( 'EmailClient', 'Helper', 'HttpClient', 'MemoryCache', 'Request', 'Session', 'Template', ), 'Integration' => array( 'BitbucketWebhook', 'GithubWebhook', 'GitlabWebhook', 'HipchatWebhook', 'Jabber', 'Mailgun', 'Postmark', 'SendgridWebhook', 'SlackWebhook', 'Smtp', ) ); public function register(Container $container) { foreach ($this->classes as $namespace => $classes) { foreach ($classes as $name) { $class = '\\'.$namespace.'\\'.$name; $container[lcfirst($name)] = function ($c) use ($class) { return new $class($c); }; } } $container['paginator'] = $container->factory(function ($c) { return new Paginator($c); }); } }