-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbootstrap.php
More file actions
127 lines (116 loc) · 5.02 KB
/
Copy pathbootstrap.php
File metadata and controls
127 lines (116 loc) · 5.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<?php
/**
* DI container bootstrap.
*
* Builds and returns a configured PHP-DI container with all application
* services bound to their interfaces. This is the central wiring point:
* every class the plugin needs is registered here so that constructor
* injection resolves dependencies automatically.
*
* @package TaskShunt
*/
declare(strict_types=1);
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
use DI\ContainerBuilder;
use TaskShunt\Api\Handlers\ContentHandler;
use TaskShunt\Api\Handlers\EnvironmentHandler;
use TaskShunt\Api\Handlers\FileHandler;
use TaskShunt\Api\ReceiverApi;
use TaskShunt\Admin\Actions\DeleteServerAction;
use TaskShunt\Admin\Actions\DiscardTaskAction;
use TaskShunt\Admin\Actions\PushTaskAction;
use TaskShunt\Admin\Actions\RetryTaskAction;
use TaskShunt\Admin\Actions\SaveModeAction;
use TaskShunt\Admin\Actions\SaveServerAction;
use TaskShunt\Admin\Actions\SaveCleanupAction;
use TaskShunt\Admin\Actions\SaveTrackingAction;
use TaskShunt\Admin\Ajax\ActivateTaskAction;
use TaskShunt\Admin\Ajax\CreateTaskAction as AjaxCreateTaskAction;
use TaskShunt\Admin\Ajax\DiscardTaskAction as AjaxDiscardTaskAction;
use TaskShunt\Admin\Ajax\PushTaskAction as AjaxPushTaskAction;
use TaskShunt\Admin\Ajax\TestConnectionAction;
use TaskShunt\Admin\Pages\ReceiverSettingsPage;
use TaskShunt\Admin\Pages\SetupPage;
use TaskShunt\Admin\AdminMenu;
use TaskShunt\Admin\Pages\SettingsPage;
use TaskShunt\Admin\Pages\TasksPage;
use TaskShunt\Admin\TaskDetailPage;
use TaskShunt\Admin\TasksListTable;
use TaskShunt\Contracts\EventDispatcherInterface;
use TaskShunt\Contracts\FileSnapshotRepositoryInterface;
use TaskShunt\Contracts\ServerRepositoryInterface;
use TaskShunt\Contracts\TaskItemRepositoryInterface;
use TaskShunt\Contracts\TaskRepositoryInterface;
use TaskShunt\Events\EventDispatcher;
use TaskShunt\HookManager;
use TaskShunt\Repository\FileSnapshotRepository;
use TaskShunt\Repository\ServerRepository;
use TaskShunt\Repository\TaskItemRepository;
use TaskShunt\Repository\TaskRepository;
use TaskShunt\Serializers\PostSerializer;
use TaskShunt\Serializers\SerializerRegistry;
use TaskShunt\Services\PostTypeRegistry;
use TaskShunt\Services\FileScanner;
use TaskShunt\Services\PushService;
$taskshunt_builder = new ContainerBuilder();
$taskshunt_builder->addDefinitions(
array(
// WordPress global — provides wpdb to any class that type-hints \wpdb.
\wpdb::class => \DI\factory(
static function (): \wpdb {
global $wpdb;
return $wpdb;
}
),
// Repositories.
TaskRepositoryInterface::class => \DI\autowire( TaskRepository::class ),
TaskItemRepositoryInterface::class => \DI\autowire( TaskItemRepository::class ),
ServerRepositoryInterface::class => \DI\autowire( ServerRepository::class ),
FileSnapshotRepositoryInterface::class => \DI\autowire( FileSnapshotRepository::class ),
// Serialization — PostSerializer acts as the universal fallback.
SerializerRegistry::class => \DI\factory(
static function (): SerializerRegistry {
return new SerializerRegistry( array( new PostSerializer() ) );
}
),
// Admin.
AdminMenu::class => \DI\autowire(),
DeleteServerAction::class => \DI\autowire(),
DiscardTaskAction::class => \DI\autowire(),
PushTaskAction::class => \DI\autowire(),
RetryTaskAction::class => \DI\autowire(),
SaveModeAction::class => \DI\autowire(),
SaveServerAction::class => \DI\autowire(),
SaveCleanupAction::class => \DI\autowire(),
SaveTrackingAction::class => \DI\autowire(),
ReceiverSettingsPage::class => \DI\autowire(),
SetupPage::class => \DI\autowire(),
ActivateTaskAction::class => \DI\autowire(),
AjaxCreateTaskAction::class => \DI\autowire(),
AjaxDiscardTaskAction::class => \DI\autowire(),
AjaxPushTaskAction::class => \DI\autowire(),
TestConnectionAction::class => \DI\autowire(),
TasksPage::class => \DI\autowire(),
TaskDetailPage::class => \DI\autowire(),
SettingsPage::class => \DI\autowire(),
TasksListTable::class => \DI\factory(
static function ( TaskRepositoryInterface $task_repository ): TasksListTable {
return new TasksListTable( $task_repository );
}
),
// API.
ContentHandler::class => \DI\autowire(),
EnvironmentHandler::class => \DI\autowire(),
FileHandler::class => \DI\autowire(),
ReceiverApi::class => \DI\autowire(),
// Application services.
PostTypeRegistry::class => \DI\autowire(),
FileScanner::class => \DI\autowire(),
EventDispatcherInterface::class => \DI\autowire( EventDispatcher::class ),
HookManager::class => \DI\autowire(),
PushService::class => \DI\autowire(),
)
);
return $taskshunt_builder->build();