On 15 July 2013 16:51, Giuseppe Ronca <giuseppe.ron...@gmail.com> wrote:
> I'm not talking about this kind of problem... > I think you know how a CMS works ... we've for example : > > * *CMS sources that are developed by Joomla devs ( i.g ) with theirs > libraries.* > * *Plugin (A) developed externally and installed by the final user, that > includes inside its sources pclzip library ( the version and library > doesn't matter) .* > * *Component (B) developed externally and installed by the final user, that > includes inside its sources pclzip library again.* > That's why you got two names for a different implementation of the same thing. You can't call your own thing the same as the original one: it's not the same. That would even confuse the consumer, which doesn't know if it's the original or the new one. > > Now ..since that library could not be installed in CMS by default, since > devs of the Plugin (A) can't know if needed library is installed ( at their > needed version ) inside another component...*we will have ofc a name > collision when both plugin and component will be loaded.* > That's actually one of the problems solved by composer... > It could be also a problem of various languages...but classes in local > scope / nested are a known technique used by different languages..and php > could implements it even better. > These classes still live under their own package, and their fully qualified name is different from all others. > In this way any CMS/Extension can arbitrary decide to use load their > components/library in a private scope ( avoiding collision ) . > i.g: > > class Loader { > public static function LoadComponent () { > local_include "foo_component/loader.php"; > } > } > This is really coupled to your own system and with how extensible you design it. You may look at modern PHP frameworks to see how the problem of extensibility is solved: it's mainly a DI/configuration issue that has nothing to do with class names. PS i'm not so practice with composer ( used few times ) but when modular > systems , such as CMS , give the possibility to extends them with external > components...i don't think that composer could solve this problem. > It is actually already happening. You should really really really check it out before going further in exploring already explored grounds. Marco Pivetta http://twitter.com/Ocramius http://ocramius.github.com/