!
php -r "readfile('https://getcomposer.org/installer');" > composer-setup.php
php -r "if (hash('SHA384', file_get_contents('composer-setup.php')) === 'fd26ce67e3b237fffd5e5544b45b0d92c41a4afe3e3f778e942e43ce6be197b9cdc7c251dcde6e2a52297ea269370680') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); }"
php composer-setup.php
php -r "unlink('composer-setup.php');"
mv composer.phar /usr/local/bin/composer
composer init
composer.json
{
"require": {
"monolog/monolog": "1.0.*"
}
}1.2.3
>=1.0
>=1.0 <2.0
>=1.0 <1.1 || >=1.2
1.0 - 2.0
1.0.*
~1.2
^1.2.3
composer.lock
require __DIR__ . '/vendor/autoload.php';$loader = require __DIR__ . '/vendor/autoload.php';
$loader->add('Acme\\Test\\', __DIR__);{
"autoload": {
"psr-4": {"Acme\\": "src/"}
}
}namespace Acme\Foo
{
"autoload": {
"psr-0": {"Acme\\Foo\\": "app/src/"}
}
}
app/
- src/
- Acme/
- Foo/ <- Acme\Foo rootnamespace Acme\Foo
{
"autoload": {
"psr-4": {"Acme\\Foo\\": "app/src/"}
}
}
app/
- src/ <- Acme\Foo root{
"name": "acme/hello-world",
"require": {
"monolog/monolog": "1.0.*"
}
}composer.json
im Detail