ヒントを使用して私の問題を解決することができましたJakub Zalasの答え(オプション2)。 autoload_classmap-orig.php
へ
- コピー作曲家の作業
autoload_classmap.php
: アイデアはにあります。
- 必要に応じてクラスを再調整/変更
composer.json
- origクラスマップに対する新しい自動ロードをテストします。
1クラスのソースファイルを含めると状況を回避するにはautomaticaly別のクラス定義(すなわちを。複数のクラスを1つのファイルで定義されている)、各クラスには、クリーンなPHP環境(別のphp-cliを実行)にロードする必要があります。
私はそのため2つのスクリプトを使用:
クラスの自動ロードチェッカー(check.php):
<?php
// test if a class, mentioned in autoload_classmap-orig.php at line $num,
// can be autoloaded. Exit status: 0 - ok, 4 - failed to autoload,
// 3 - no more classes in autoload_classmap-orig.php
error_reporting(0);
require_once(__DIR__ . "/vendor/autoload.php");
$num = $argv[1];
$classes = array_keys(include('autoload_classmap-orig.php'));
if (!isset($classes[$num])) {
exit(3);
}
$current_class = $classes[$num];
echo $current_class;
if (!class_exists($current_class)) {
exit(4);
}
exit(0);
イテレータ(check.sh)
#!/usr/bin/env bash
# call ./check.php until all classes are checked or max number
# of checks reached.
max=500
num=0
while true ; do
php ./check.php $num
status=$?
case $status in
0) echo " - OK" ;;
3) echo "\nFinished." ; break ;;
4) echo " - CAN NOT BE AUTOLOADED" ;;
*) echo " - UNKNOWN ERROR $status" ;;
esac
num=$(($num + 1))
if [ "$num" -gt "$max" ] ; then
echo "\nMax number of classes reached."
break
fi
done
ヒントをありがとう!どのようにすべてのPHPクラス(FQCN)を一覧表示しますか?そのためのツールはありますか(grep/sed/awkを書くこともできますが、ツールがあればより信頼性があります)。 – cronfy