◆ vendor/autoload.php を require すれば自動でロードされる
◆ 関数の場合は autoload.php のロード時にロードされるように設定されてる

composer 自体のコマンドは前記事でやったので インストールしたパッケージを使ってみます

インストールしたパッケージを使う

コンソールで使うには smarty って向いてないかなと思ったので 別の依存なしのパッケージを使います
LINQ 系パッケージの yalinqo にしました

[user@fedora]/mnt/win/test/dir000/ctes% composer require athari/yalinqo
Using version ^2.4 for athari/yalinqo
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 2 installs, 0 updates, 0 removals
- Installing smarty/smarty (v3.1.32): Loading from cache
- Installing athari/yalinqo (v2.4.1): Downloading (100%)
Writing lock file
Generating autoload files

[user@fedora]/mnt/win/test/dir000/ctes% cat composer.json
{
"name": "user/ctes",
"require": {
"smarty/smarty": "^3.1",
"athari/yalinqo": "^2.4"
}
}

composer.json はこんな状態です

では実行する PHP ファイルを作ります

[app.php]
<?php

require __DIR__ . '/vendor/autoload.php';

$data = [
['group' => 'x', 'num' => 100],
['group' => 'y', 'num' => 200],
['group' => 'z', 'num' => 300],
['group' => 'z', 'num' => 400],
['group' => 'y', 'num' => 500],
['group' => 'y', 'num' => 600],
['group' => 'z', 'num' => 700],
['group' => 'x', 'num' => 800],
['group' => 'x', 'num' => 900],
];

function f($key){
return function($item) use ($key) {
return array_key_exists($key, $item) ? $item[$key] : null;
};
}

foreach(from($data)->groupBy(f('group'), f('num')) as $name => $group){
echo $name, ' -> ', from($group)->sum(), PHP_EOL;
}
[user@fedora]/mnt/win/test/dir000/ctes% php app.php
x -> 1800
y -> 1300
z -> 1400

require で vendor/autoload.php をロードしていれば インストールパッケージの機能が使えます
プログラムの中身は 適当に作った配列のデータを groupby で集計してるだけの単純なものです
composer 的な部分は最初のロードしてる部分くらいです

関数のロード

クラスを使おうとするとオートロード機能で動的にロードされます
なので 何百ってクラスが使える状態でも使われないならロードされない作りです

ですが 関数の場合はそんな機能はなかったと思います
この例だと from 関数です
グローバル空間の関数ですが yalinqo パッケージのものです

vendor/athari/yalinqo/YaLinqo/Linq.php

で定義されています

このファイル内で echo して確認してみると from のタイミングではなく autoload.php を require した際にロードされて定義されていました

yalinqo の composer.json を見ると

    "autoload": {
"psr-4": {
"YaLinqo\\": "YaLinqo/"
},
"files": [
"YaLinqo/Linq.php"
]
},

とあったので files に書いたものは即ロードされるようです

vendor/composer/*

では こういった情報がまとめられて

autoload_static.php は

public static $files = array (
'f9e61f18f0291090ecf3f67a829046de' => __DIR__ . '/..' . '/athari/yalinqo/YaLinqo/Linq.php',
'f084d01b0a599f67676cffef638aa95b' => __DIR__ . '/..' . '/smarty/smarty/libs/bootstrap.php',
);

となってました

具体的なファイルパスまで指定されているので パスが変わるようなことをして動かなくなったら

composer dumpautoload

でこれらのファイルを再生成するとうまく動くことがあります