composer - 测试创建的包 - class 未找到
composer - testing created package - class not found
我正在尝试使用本教程中的 composer 创建 Hello world 包
http://grossi.io/2013/creating-your-first-composer-packagist-package/
半天前我设法创建并测试了它,但现在在不同的目录中我又试了几次 - 无法使其工作并且不明白为什么我会出现错误,稍后会显示。
这是我的做法:
在 HelloWorld 目录中,我创建了 src 目录。
在 src 目录中,我将文件 SayHello.php
namespace HelloWorld;
class SayHello
{
public static function world()
{
return 'Hello World, Composer!';
}
}
运行
composer init
创建composer.json文件后,我编辑,最后是这样的:
{
"name": "vagrant/hello-world",
"description": "test",
"license": "no",
"authors": [
{
"name": "darius",
"email": "darius@darius.lt"
}
],
"minimum-stability": "dev",
"require": {
"php": ">=5.3.0"
},
"autoload": {
"psr-0": {
"HelloWorld": "src/"
}
}
}
那我运行
composer install
我得到输出:
Loading composer repositories with package information
Installing dependencies (including require-dev)
Nothing to install or update
Generating autoload files
教程说
Composer installed create a directory "tests" inside your root dir.
但是我没有看到这样的目录,所以我在HelloWorld目录下自己创建了它。可能作者漏补了。
然后我创建文件test.php
require_once __DIR__ . '/../vendor/autoload.php'; // Autoload files using Composer autoload
use HelloWorld\SayHello;
echo SayHello::world();
运行:
php tests/test.php
并得到:
PHP 致命错误:在第 7
行的 /home/vagrant/package_dev/workbench/oitlabs/HelloWorld/tests/test.php 中找不到 Class 'HelloWorld\SayHello'
现在怎么能看到呢?我试着加入 test.php
require_once __DIR__ . '/../src/SayHello.php';
然后它会看到并起作用,所以这意味着它应该会看到该文件。所以它有点像作曲家生成错误的自动加载文件或其他东西。我该如何调试?
还在我第一次成功的目录附近的另一个目录中尝试了相同的步骤,只是使用命名空间 Hello。同样的错误。
这也是文件 - 我的包的外观,作曲家生成的内容:
http://www58.zippyshare.com/v/Hsfg4pVf/file.html
问题是 - 我需要在 src 目录中有目录 "HelloWorld"。
因此文件夹结构如下所示:
Root
src
HelloWorld
SayHello.php
tests
test.php
vendor
composer.json
我正在尝试使用本教程中的 composer 创建 Hello world 包
http://grossi.io/2013/creating-your-first-composer-packagist-package/
半天前我设法创建并测试了它,但现在在不同的目录中我又试了几次 - 无法使其工作并且不明白为什么我会出现错误,稍后会显示。
这是我的做法:
在 HelloWorld 目录中,我创建了 src 目录。 在 src 目录中,我将文件 SayHello.php
namespace HelloWorld;
class SayHello
{
public static function world()
{
return 'Hello World, Composer!';
}
}
运行
composer init
创建composer.json文件后,我编辑,最后是这样的:
{
"name": "vagrant/hello-world",
"description": "test",
"license": "no",
"authors": [
{
"name": "darius",
"email": "darius@darius.lt"
}
],
"minimum-stability": "dev",
"require": {
"php": ">=5.3.0"
},
"autoload": {
"psr-0": {
"HelloWorld": "src/"
}
}
}
那我运行
composer install
我得到输出:
Loading composer repositories with package information
Installing dependencies (including require-dev)
Nothing to install or update
Generating autoload files
教程说
Composer installed create a directory "tests" inside your root dir.
但是我没有看到这样的目录,所以我在HelloWorld目录下自己创建了它。可能作者漏补了。
然后我创建文件test.php
require_once __DIR__ . '/../vendor/autoload.php'; // Autoload files using Composer autoload
use HelloWorld\SayHello;
echo SayHello::world();
运行:
php tests/test.php
并得到:
PHP 致命错误:在第 7
行的 /home/vagrant/package_dev/workbench/oitlabs/HelloWorld/tests/test.php 中找不到 Class 'HelloWorld\SayHello'现在怎么能看到呢?我试着加入 test.php
require_once __DIR__ . '/../src/SayHello.php';
然后它会看到并起作用,所以这意味着它应该会看到该文件。所以它有点像作曲家生成错误的自动加载文件或其他东西。我该如何调试?
还在我第一次成功的目录附近的另一个目录中尝试了相同的步骤,只是使用命名空间 Hello。同样的错误。
这也是文件 - 我的包的外观,作曲家生成的内容: http://www58.zippyshare.com/v/Hsfg4pVf/file.html
问题是 - 我需要在 src 目录中有目录 "HelloWorld"。
因此文件夹结构如下所示:
Root
src
HelloWorld
SayHello.php
tests
test.php
vendor
composer.json