產生新專案
主題
相關文件
範例
操作步驟
產生「專案資料夾」
執行下面指令,產生「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