產生新專案
主題
相關文件
範例
操作步驟
產生「專案資料夾」
執行下面指令,產生「demo」這個專案資料夾
mkdir -p demo
執行下面指令,切換到「demo」這個資料夾
cd demo
產生「composer.json」
接下來我們要產生「composer.json」這個設定檔案。
我們可以透過「純文字編輯器」,直接編輯「composer.json」,可以參考「The composer.json schema」了解各個欄位的功用。
我們也可以透過「composer init」這個指令,來產生產生「composer.json」這個設定檔案。
關於「
composer init
」有兩種模式,
互動模式
執行「composer init
」進入「互動模式
」,
只要跟著「提示問題」回答,最後就會」產生「composer.json」這個設定檔案。
腳本模式
執行「composer init
」有加入「--no-interaction
」這個參數,就會進入「腳本模式
」,
同時我們也會加入一些參數,舉例如下
其他的參數,就是雷同「互動模式
」的「提示問題」,加上「您的回答」。
composer init \ --name="cute/demo" \ --description="The demo project for composer init" \ --type="project" \ --license="MIT" \ --homepage="https://github.com/samwhelp/note-about-php-composer" \ --author="developer <developer@home.heaven>" \ --require="symfony/filesystem:^7.1" \ --require="symfony/console:^7.1" \ --autoload="" \ --no-interaction
上面的步驟,可以參考「範例腳本」,並且對照觀看產生的「composer.json」
執行「composer install」
產生了「composer.json
」之後,接著就可以執行下面指令
composer install
沒有例外的狀況下,就會產生「composer.lock
」這個檔案,和一個資料夾「vendor
」。
demo/ ├── composer.json ├── composer.lock └── vendor
而「vendor
」裡面的檔案,類似如下,除了「autoload.php
」是檔案,其他的是資料夾。
autoload.php composer psr symfony
除了執行「
composer install
」,爾後也可以執行「composer update
」。
加入「.gitignore」
產生一個檔案「.gitignore
」,內容如下
composer.lock vendor/*
這個動作不是必要的,未來我們若要將這專案放到「GitHub」上,
一般不會將「composer.lock
」以及「vendor
」「推送(push)」到「GitHub」上,
所以我們要產生「.gitignore
」這個檔案,裡面列的檔案規則,就不會納入「git」的管理。
加入所需「Package」
剛剛前面在執行「composer init --no-interaction
」時,
我們有加入「--require="symfony/filesystem:^7.1"
」和「--require="symfony/console:^7.1"
」這兩個參數,
我們其實也可以在產生了「composer.json
」之後,執行下面的指令加入。
執行下面指令,加入「symfony/filesystem」
composer require symfony/filesystem
執行下面指令,加入「symfony/console」
composer require symfony/console
注意,在還沒產生「
composer.json
」之前,也可以直接執行「composer require
」,也會產生「composer.json
」,內容類似如下。
{ "require": { "symfony/filesystem": "^7.1", "symfony/console": "^7.1" } }
修改「autoload」
在上面執行「composer init --no-interaction
」時,
有加入一個參數「--autoload=""
」
會產生對應的「composer.json
」設定片段如下
"autoload": { "psr-4": { "Cute\\Demo\\": "" } },
我們直接用「純文字編輯器」,編輯「composer.json
」這個檔案,修改如下
"autoload": { "psr-4": { "Cute\\": "src/Cute" } },
接著執行下面指令,使其生效
composer dump-autoload
接著我們要來測試,我有將完整的範例放在「GitHub」上
執行下面指令,產生「src/Cute」這個資料夾。
mkdir -p src/Cute
接著產生一個檔案「src/Cute/Demo.php」,內容如下。
<?php namespace Cute; class Demo { public function run () { var_dump(__CLASS__); } }
接著產生一個檔案「app.php」,內容如下。
#!/usr/bin/env php <?php require_once (__DIR__ . '/vendor/autoload.php'); (new \Cute\Demo()) ->run();
這時候,我們就可以執行下面指令,來測試
php app.php
也可以執行下面指令,將「app.php
」設定為「可執行
」,
chmod 755 app.php
接著就可以執行下面指令,來測試,等同執行「php app.php
」
./app.php