diff --git a/doc/01-basic-usage.md b/doc/01-basic-usage.md index 8cad96f6c..b33f06ac6 100644 --- a/doc/01-basic-usage.md +++ b/doc/01-basic-usage.md @@ -3,7 +3,7 @@ ## Introduction For our basic usage introduction, we will be installing `monolog/monolog`, -a logging library. If you have not yet installed Composer, refer to the +a logging library. If you have not yet installed Composer, refer to the [Intro](00-intro.md) chapter. > **Note:** for the sake of simplicity, this introduction will assume you @@ -18,7 +18,7 @@ other metadata as well. ### The `require` Key The first (and often only) thing you specify in `composer.json` is the -[`require`](04-schema.md#require) key. You're simply telling Composer which +[`require`](04-schema.md#require) key. You're simply telling Composer which packages your project depends on. ```json @@ -29,8 +29,8 @@ packages your project depends on. } ``` -As you can see, [`require`](04-schema.md#require) takes an object that maps -**package names** (e.g. `monolog/monolog`) to **version constraints** (e.g. +As you can see, [`require`](04-schema.md#require) takes an object that maps +**package names** (e.g. `monolog/monolog`) to **version constraints** (e.g. `1.0.*`). ### Package Names @@ -53,7 +53,7 @@ In the previous example we were requiring version Monolog. This means any version in the `1.0` development branch. It is the equivalent of saying versions that match `>=1.0 <1.1`. -Version constraints can be specified in several ways, read +Version constraints can be specified in several ways, read [versions](articles/versions.md) for more in-depth information on this topic. ### Stability @@ -82,7 +82,7 @@ In case of Monolog it will put it into `vendor/monolog/monolog`. > `vendor` in your `.gitignore`. You really don't want to add all of that > code to your repository. -You will notice the [`install`](03-cli.md#install) command also created a +You will notice the [`install`](03-cli.md#install) command also created a `composer.lock` file. ## `composer.lock` - The Lock File @@ -94,8 +94,8 @@ to those specific versions. **Commit your application's `composer.lock` (along with `composer.json`) into version control.** -This is important because the [`install`](03-cli.md#install) command checks -if a lock file is present, and if it is, it downloads the versions specified +This is important because the [`install`](03-cli.md#install) command checks +if a lock file is present, and if it is, it downloads the versions specified there (regardless of what `composer.json` says). This means that anyone who sets up the project will download the exact same @@ -111,9 +111,9 @@ versions from `composer.json` and create the lock file after executing the [`update`](03-cli.md#update) or the [`install`](03-cli.md#install) command. This means that if any of the dependencies get a new version, you won't get the -updates automatically. To update to the new version, use the -[`update`](03-cli.md#update) command. This will fetch the latest matching -versions (according to your `composer.json` file) and also update the lock file +updates automatically. To update to the new version, use the +[`update`](03-cli.md#update) command. This will fetch the latest matching +versions (according to your `composer.json` file) and also update the lock file with the new version. ```sh @@ -141,8 +141,8 @@ means that you can automatically `require` any package that is available there. If you go to the [Packagist website](https://packagist.org/) (packagist.org), you can browse and search for packages. -Any open source project using Composer is recommended to publish their packages -on Packagist. A library doesn't need to be on Packagist to be used by Composer, +Any open source project using Composer is recommended to publish their packages +on Packagist. A library doesn't need to be on Packagist to be used by Composer, but it enables discovery and adoption by other developers more quickly. ## Autoloading @@ -152,7 +152,7 @@ For libraries that specify autoload information, Composer generates a autoloading for free. ```php -require 'vendor/autoload.php'; +require __DIR__ . '/vendor/autoload.php'; ``` This makes it really easy to use third party code. For example: If your project @@ -165,7 +165,7 @@ $log->pushHandler(new Monolog\Handler\StreamHandler('app.log', Monolog\Logger::W $log->addWarning('Foo'); ``` -You can even add your own code to the autoloader by adding an +You can even add your own code to the autoloader by adding an [`autoload`](04-schema.md#autoload) field to `composer.json`. ```json @@ -183,8 +183,8 @@ You define a mapping from namespaces to directories. The `src` directory would be in your project root, on the same level as `vendor` directory is. An example filename would be `src/Foo.php` containing an `Acme\Foo` class. -After adding the [`autoload`](04-schema.md#autoload) field, you have to re-run -[`dump-autoload`](03-cli.md#dump-autoload) to re-generate the +After adding the [`autoload`](04-schema.md#autoload) field, you have to re-run +[`dump-autoload`](03-cli.md#dump-autoload) to re-generate the `vendor/autoload.php` file. Including that file will also return the autoloader instance, so you can store @@ -192,12 +192,12 @@ the return value of the include call in a variable and add more namespaces. This can be useful for autoloading classes in a test suite, for example. ```php -$loader = require 'vendor/autoload.php'; +$loader = require __DIR__ . '/vendor/autoload.php'; $loader->add('Acme\\Test\\', __DIR__); ``` -In addition to PSR-4 autoloading, Composer also supports PSR-0, classmap and -files autoloading. See the [`autoload`](04-schema.md#autoload) reference for +In addition to PSR-4 autoloading, Composer also supports PSR-0, classmap and +files autoloading. See the [`autoload`](04-schema.md#autoload) reference for more information. > **Note:** Composer provides its own autoloader. If you don't want to use that