【发布时间】:2020-01-27 10:59:06
【问题描述】:
我正在关注article学习php和composer
我尝试使用外部依赖composer require phpunit/php-timer。
这是我的 composer.json:
{
"name": "ypapax/composer_php_hello_world_log4php",
"minimum-stability": "dev",
"require": {
"php": ">= 7.2",
"phpunit/php-timer": "^2.1@dev"
},
"autoload": {
"psr-0": {
"HelloWorld": "src/"
},
"classname": {
"PHP_Timer": "src/"
}
}
}
还有我的test.php:
<?php
// Autoload files using Composer autoloader.
require_once __DIR__ . '/../vendor/autoload.php';
use HelloWorld\Greetings;
echo Greetings::sayHelloWorld();
greetings.php 在哪里
<?php
namespace HelloWorld;
use PHP_Timer;
class Greetings
{
public static function sayHelloWorld()
{
$timer = new PHP_Timer();
$timer . start();
return 'Hello World\n' . $timer->resourceUsage() . "\n";
}
}
当我运行测试时php tests/test.php
它给了我一个错误:
PHP Fatal error: Uncaught Error: Class 'PHP_Timer' not found in composer_php_hello_world_log4php/src/HelloWorld/Greetings.php:11
Stack trace:
#0 composer_php_hello_world_log4php/tests/test.php(8): HelloWorld\Greetings::sayHelloWorld()
#1 {main}
thrown in composer_php_hello_world_log4php/src/HelloWorld/Greetings.php on line 11
Fatal error: Uncaught Error: Class 'PHP_Timer' not found in composer_php_hello_world_log4php/src/HelloWorld/Greetings.php:11
Stack trace:
#0 composer_php_hello_world_log4php/tests/test.php(8): HelloWorld\Greetings::sayHelloWorld()
#1 {main}
thrown in composer_php_hello_world_log4php/src/HelloWorld/Greetings.php on line 11
我猜 composer.json 有问题:
"classname": {
"PHP_Timer": "src/"
}
PHP版本:
$ php --version
PHP 7.3.9 (cli) (built: Sep 14 2019 18:07:55) ( NTS )
链接到我的test repo
更新
这是我的文件autoload_namespaces.php:
<?php
// autoload_namespaces.php @generated by Composer
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
'HelloWorld' => array($baseDir . '/src'),
);
还有autoload_classmap.php:
<?php
// autoload_classmap.php @generated by Composer
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
'SebastianBergmann\\Timer\\Exception' => $vendorDir . '/phpunit/php-timer/src/Exception.php',
'SebastianBergmann\\Timer\\RuntimeException' => $vendorDir . '/phpunit/php-timer/src/RuntimeException.php',
'SebastianBergmann\\Timer\\Timer' => $vendorDir . '/phpunit/php-timer/src/Timer.php',
);
【问题讨论】:
-
在安装/更新期间,所有 PSR-0 引用都被合并到一个
key => value数组中。你检查过生成的文件vendor/composer/autoload_namespaces.php. -
@lovelace 我在上面添加了文件
vendor/composer/autoload_namespaces.php内容 -
classnameis not a valid composer.json 键。也许你的意思是classmap? -
您忘记了
use声明。它发生了,没什么大不了的。
标签: php composer-php