1
+ <?php
2
+ require 'BlockChecker.php ' ;
3
+ require 'CharChecker.php ' ;
4
+ require 'DirChecker.php ' ;
5
+ require 'FifoChecker.php ' ;
6
+ require 'FileChecker.php ' ;
7
+ require 'LinkChecker.php ' ;
8
+ require 'NullChecker.php ' ;
9
+ require 'Socketchecker.php ' ;
10
+ require 'UnknownChecker.php ' ;
11
+ require 'CheckedFile.php ' ;
12
+
13
+ class Nitpicker {
14
+
15
+ public function checkFile (string $ file ):object
16
+ {
17
+
18
+ $ violations = $ this ->getCheckerFor (file:$ file )->check (file:$ file );
19
+ $ checkedFile = new CheckedFile (file:$ file ,violations:$ violations );
20
+
21
+ return $ checkedFile ;
22
+ }
23
+
24
+ public function getCheckerFor (string $ file ):object
25
+ {
26
+ $ checker = match (filetype ($ file )) {
27
+
28
+ 'fifo ' => new FifoChecker ($ file ),
29
+ 'char ' => new CharChecker ($ file ),
30
+ 'dir ' => new DirChecker ($ file ),
31
+ 'block ' => new BlockChecker ($ file ),
32
+ 'link ' => new LinkChecker ($ file ),
33
+ 'file ' => new FileChecker ($ file ),
34
+ 'socket ' => new SocketChecker ($ file ),
35
+ 'unknown ' => new UnknownChecker ($ file ),
36
+ default => new NullChecker ($ file ),
37
+ };
38
+ return $ checker ;
39
+ }
40
+
41
+ }
0 commit comments