Extensibility

Using `private` visibility when creating classes in a library prevents easy code reuse. For instance, in our project, we decided to use the `locale` parameter for the UI, and use another parameter (named `content_locale`) for the content. On one of our website, there will be 2 UI languages, and 4 content langauges (it is an administration interface for a swiss project). We need to have another listener, but the developer in charge of this did not extend your class because he needed to rewrite the same properties because they were private. It's a shame, and it is not the first time this scenario happens to me. I think it calls for a (new ?) best practice : 

> When writing library code, try to avoid `private` .

Do you agree ?
hmm. You should declare all the properties in this class (I often do not in tests, but that is the standard and I should..). In anycase you implement `$chooser` but not the others.