I get abbreviating function to fn since the import part is the name, it is very common, and a lot of languages do it. I think abbreviating private is a mistake. It is important in itself and should have attention called to it.
Speaking of readability: Just `pri` as the constructor?
When having just a quick glance at code I want to know which part does what. Function names help, even if it is __construct.
And the @str title=null line above the class seems very odd.
pri's not a constructor in this language's terms, it's just a visibility operator. The language wants you to be able to use code in your class member assignment statements; if that means it has to generate a constructor to make it happen, it will. Or maybe it just wants you to start coding without fussing with boilerplate.
And the @str title=null line above the class seems very odd.
This is great because you can indent code under it that's relevant to it, that would normally end up cluttering your function's narrative up with housekeeping for variables.