Проблема в том, что свойства должны быть встроенными константами, когда вы помещаете их в поля инициализатора.
То, что вы делаете, не сработает, но это, например, будет:
private static $dsn = 'mysql:host=localhost;dbname=mydb';
Я знаю, это глупо, но вы даже не можете использовать константы PHP. Вы должны буквально иметь это в виде простого текста.
Решением этой проблемы является инициализация $dsn
в конструкторе класса, например:
class MyClass
{
public function __construct()
{
self:: $dsn = DB_TYPE.':host='.DB_HOST.';dbname='.DB_NAME;
}
}