Изглежда въобще не слушате @gatakka, а и се вижда, че не сте много наясно с ООП.
1. Конструктора на Loader е дефиниран като private, т.е. този клас не може да бъде инстанцииран по никакъв начин и това е основната идея на автора на урока. Този клас не бива да бъде викан никъде. Има за цел да зарежда класовете, затова се правят статични методи, които да могат да се извикат в конструктора на App. Изрично автора каза, че Loader.php ще е единствения файл, който ще е хардкод извикан в друг файл клас.
2. Не е ясно какво всъщност искаш да направиш с това
2.1. Така не се вика клас, трябва да сложиш ключовата дума new отпред. И все пак, няма как да го извикаш. Защо ? Прочети първа точка.
3. Ако не си схванал защо класа е final, то да обясня. Класа се прави final, когато не искаме да участва в дъщерен. Т.е. не искаме да позволяваме да може да бъде наследяван(extended) от друг клас. Както казах по-горе, този клас не трябва да се инстанцира, има за цел да зарежда и регистрира namespaces + класове.
Защо не успява да ти се извика конфиг класа ?
1. Има огромна разлика, когато викаш свойство(property) и когато викаш метод(функциите в класовете).
Ти правиш следното нещо:
$config = \VF\Config::getInstance;
което в случая се мъчи да намери свойство с име getInstance, а не метод. Когато искаш да извикаш метод, то задължително трябва да сложиш двете скоби накрая
(), за да покажеш на интерпретатора, че това нещо трябва да се приема като статична функция, а не като статично свойство.
Надявам се да съм бил изчерпателно подробен.
ЕДИТ: \VF\Config::getInstance се обърках - няма да търси за свойство, а за константа, защото ако беше свойство, трябваше да има специфичното доларче за променлива.