Netbeans上でcomposerを使う

# NetBeansでComposerを使うための覚書 
今回のインストール環境はOSX (10.11.5)
composerのインストールはHomebrewを使用。

## 1.Composerを初期化 
プロジェクトから、対象のプロジェクトを選択し右クリックで、Composer -> Initを選択。
 ![スクリーンショット 2016-07-03 20.09.03.png](https://qiita-image-store.s3.amazonaws.com/0/130497/2220fe99-7157-98c7-2f51-bc71b4584b23.png)

## 2.composer.jsonを記述  
初期化でSource Files直下にcomposer.jsonが作成されているので、それを開いてインストールしたいパッケージについてなどを記述する。
今回は、phalconのテスト環境の構築と、メール送信のためのPHPMailerをインストールする。

- 開発環境用
    - phpunit(PHP Unit Test)
    - phpunit-selenium(Selenium)
    - php-mailer(開発環境、本番環境共に)
    - devtools（Phalcon開発ツール）
    - phalcon/incubator(Phalconのテスト用)
- 開発環境、本番環境両方。
    - php-mailer


```json:composer.json
{  
    // OS X (10.11.5) 以降はこの設定を入れる。
    "repositories": [
        { "packagist": false },
        {
             "type": "composer", 
             "url": "https://packagist.org"
        }
    ],
    // 任意でphpとphalconのversionを指定
    "config": {
        "platform": {
            "php": "5.6.23",
            "ext-phalcon" : "2.0.13"
        }
    },
    "name": "vendor/{project}",
    "description": "Description of project {project}.",
    // 開発環境用
    "require-dev" : {
        "phpunit/phpunit": "5.4.*",
        "phpunit/phpunit-selenium": ">=1.3",
        "phpmailer/phpmailer": "~5.2",
        "phalcon/devtools": "dev-master",
        "phalcon/incubator": "dev-master"
    },
    // 本番環境
    "require" : {
        "phpmailer/phpmailer": "~5.2"
    }
}
```

`"repositories": [....`は、次に行う、Composerのインストール時に必要となる。

## 3.PackagesのInstallを行う。
プロジェクトから、対象のプロジェクトを選択し右クリックで、Composer -> Install(dev)を選択。
![スクリーンショット 2016-07-03 20.41.17.png](https://qiita-image-store.s3.amazonaws.com/0/130497/704aa383-06af-a601-7b23-8cdf8b4300bf.png)


※repositoriesを設定していないとセキュリティーの問題上、以下のインストール時に以下のようなメッセージが表示されて、インストールが止まる。（結構ハマる人がいる、自分はハマった。）

```text
[Composer\Downloader\TransportException]                                                                                                                                   
  The 'http://packagist.org/p/****.json' URL could not be accessed: HTTP/1.1 400 Bad Request  
```

また、configでplatformを指定しないと、brewでinstallしたext-phalconのバージョンが取得できず、phalcon関係のpackageがダウンロード出来ないので注意が必要。
                                                                                                                                                                 
## 4.Installが成功しているか確認

```text
"/usr/local/bin/composer" "--ansi" "--no-interaction" "install"
Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Installing phalcon/devtools (dev-master 660df5e)
    Cloning 660df5e050af2fe0f8a941402cc5492614e82d9d

 (中略)

  - Installing phpunit/phpunit-selenium (3.0.2)
    Downloading: 100%

phalcon/incubator suggests installing ext-aerospike (*)
phalcon/incubator suggests installing duncan3dc/fork-helper (To use extended class to access the beanstalk queue service)
phpmailer/phpmailer suggests installing league/oauth2-google (Needed for Google XOAUTH2 authentication)
phpunit/php-code-coverage suggests installing ext-xdebug (>=2.4.0)
sebastian/global-state suggests installing ext-uopz (*)
phpunit/phpunit suggests installing phpunit/php-invoker (~1.1)
Writing lock file
Generating autoload files
Done.
```

Projectを見ると、Source Files 以下にvendorフォルダ、Composer Librariesにinstallしたパッケージが表示されている。

![スクリーンショット 2016-07-03 21.33.04.png](https://qiita-image-store.s3.amazonaws.com/0/130497/04aab0df-92af-84c9-b08c-68ac7bf9c9e1.png)

これで、NetbeansにてComposerを使った環境構築完了。

## まとめ
1. configを設定していないとBrewで作った環境の場合失敗する場合がある。
2. repositoriesの設定が無いと、Netbeans側か何かは分からないが、セキュリティー上ダウンロード出来ない場合あり。  

以上を気をつければ、環境構築に苦しむ事もないはず。