From 365060f0cbd9c4943f65c59055e598d7f716e133 Mon Sep 17 00:00:00 2001 From: Nick Lombard Date: Mon, 4 Jun 2012 06:15:59 +0300 Subject: [PATCH] More autoload documentation. As discovered through discussions at composer/composer#763 Resubmitted after travis complained, lets try again. --- doc/04-schema.md | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/doc/04-schema.md b/doc/04-schema.md index 0dfe86b90..d96213010 100644 --- a/doc/04-schema.md +++ b/doc/04-schema.md @@ -349,7 +349,10 @@ since it offers greater flexibility (no need to regenerate the autoloader when y classes). Under the `psr-0` key you define a mapping from namespaces to paths, relative to the -package root. Note that this also supports the PEAR-style convention. +package root. Note that this also supports the PEAR-style non-namespaced convention. + +The PSR-0 references are all combined, during install/update, into a single key => value +array which may be found in the generated file `vendor/composer/autoload_namespaces.php`. Example: @@ -372,6 +375,17 @@ you can specify them as an array as such: } } +The PSR-0 style is not limited to namespace declarations only but may be +specified right down to the class level. This can be useful for libraries with +only one class in the global namespace. If the php source file is also located +in the root of the package, for example, it may be declared like this: + + } + "autoload": { + "psr-0": { "UniqueGlobalClass": "" } + } + } + If you want to have a fallback directory where any namespace can be, you can use an empty prefix like: @@ -381,6 +395,14 @@ use an empty prefix like: } } +***Note: This will have an impact on performance and also keep in minh that this +method forfeits it's uniqueness and there is nothing preventing another "" entry, +from another packoge perhaps, taking its place. Use with caution.*** + +The `classmap` references are all combined, during install/update, into a single +key => value array which may be found in the generated file +`vendor/composer/autoload_classmap.php`. + You can use the classmap generation support to define autoloading for all libraries that do not follow PSR-0. To configure this you specify all directories or files to search for classes.