@Pascal MARTIN:
Yes, in normal applicacions it's probably not needed. But sometimes it could be useful.
Consider an example from my own app:
There's a Controller subclass which can use a Template object to prepare its output. Every template has a name to refer it to. When a Controller needs a Template, it asks the TemplateManager for it by giving that name as a parameter.
But there could be many template files with that name for different Controllers. Controlers are used as plugins, and may be written by different users, so the names used by them can't be controlled to no collide with each other. Namespaces for templates are needed.
So TemplateManager, which is a factory for Template objects, needs the template name and the namespace name to locate the proper template source file. This namespace is related to the particular Controller's class name.
Ancak, çoğu durumda, her Kontrolör kendi ad gelen ve sadece başka ad gelen nadir durumlarda şablonları kullanarak olacaktır. Yani TemplateManager :: GetTemplate her çağrısı ad belirterek () her zaman bir karmaşa olacak. Namespace için ... the Controller which calls the TemplateManager::getTemplate()! isteğe ve varsayılan Ve burada arayan bilmek için iyi bir yer olduğunu daha iyi olur.
Tabii ki arayan Denetleyicisi kendisini veya bir parametre olarak adını geçebileceği, ama gerçekten ad adı geçen pek farklı değildir. Bu iki şekilde isteğe bağlı olamazdı.
Eğer arayan bilmek eğer Ama, hatta arayan rahatsız etmeden, GetTemplate () içindeki otomatik ad varsayılan için bu bilgileri kullanabilirsiniz. Bu GetTemplate () kendi içinde de bunu işleme nasıl bilmek zorunda değildir ve nasıl uygun varsayılan ad alanını biliyor. O sadece öyle olduğunu bilmek gerekiyor ve gerçekten ihtiyacı varsa, isteğe bağlı olarak herhangi bir başka ad geçebilir.