具有 PHPSpec 的 PHP composer 包中的文件结构
File structure in a PHP composer package with PHPSpec
我有一个工作的作曲家包,只有一个文件和一个 class。所以,现在我正在尝试更改包,使其更像 SOLID。
我有这样的文件结构...
PackageName.php
addresses.php
names.php
interfaces
names.php
addresses.php
当我使用 PHPSpec 时,主要 PackageName.php 中的方法正在得到验证,但在其中一种方法中,我有类似...
namespace blah\PackageName;
use blah\PackageName\ProcessNames;
class PackageName
{
public function formatData($user)
{
$place_holders = array();
$place_holders = ProcessNames::process_name($user, $place_holders);
$place_holders = ProcessAddresses::process_address($user, $place_holders);
return json_encode($place_holders);
}
}
给出错误...
48 ! should do the address
exception [err:Error("Class 'blah\PackageName\ProcessNames' not found")] has been thrown.
composer.json 就像...
{
"name": "blah\PackageName",
"description": "Format data.",
"require": {
"nesbot/carbon": "^1.34",
"php": ">7.0.0"
},
"require-dev": {
"phpspec/phpspec": "^4.3"
},
"authors": [
{
"name": "me",
"email": "me@emailaddress.com"
}
],
"autoload": {
"psr-4": {
"blah\PackageName\": "src/",
"spec\blah\PackageName\": "spec/"
},
"files": {
"src/interfaces/names.php",
"src/names.php"
}
}
}
我看不到如何在包中包含文件。我不确定我是否需要 composer.json 上的 "files" 部分,但我正在尝试弄清楚如何去做。非常感谢任何信息。
这与今天其他人遇到的问题相同!一个简单的错误。
替换:
namespace blah\PackageName;
与:
namespace blah;
完整的 class 名称包括名称空间和 class 名称。所以基本上你的 class 实际上是 blah\PackageName\Packagename
的一个实例
可能会从 composer.json 中取出 Packagename,这取决于您的需要,如果您更改它,请记住 运行 composer dumpautoload
我有一个工作的作曲家包,只有一个文件和一个 class。所以,现在我正在尝试更改包,使其更像 SOLID。
我有这样的文件结构...
PackageName.php
addresses.php
names.php
interfaces
names.php
addresses.php
当我使用 PHPSpec 时,主要 PackageName.php 中的方法正在得到验证,但在其中一种方法中,我有类似...
namespace blah\PackageName;
use blah\PackageName\ProcessNames;
class PackageName
{
public function formatData($user)
{
$place_holders = array();
$place_holders = ProcessNames::process_name($user, $place_holders);
$place_holders = ProcessAddresses::process_address($user, $place_holders);
return json_encode($place_holders);
}
}
给出错误...
48 ! should do the address exception [err:Error("Class 'blah\PackageName\ProcessNames' not found")] has been thrown.
composer.json 就像...
{
"name": "blah\PackageName",
"description": "Format data.",
"require": {
"nesbot/carbon": "^1.34",
"php": ">7.0.0"
},
"require-dev": {
"phpspec/phpspec": "^4.3"
},
"authors": [
{
"name": "me",
"email": "me@emailaddress.com"
}
],
"autoload": {
"psr-4": {
"blah\PackageName\": "src/",
"spec\blah\PackageName\": "spec/"
},
"files": {
"src/interfaces/names.php",
"src/names.php"
}
}
}
我看不到如何在包中包含文件。我不确定我是否需要 composer.json 上的 "files" 部分,但我正在尝试弄清楚如何去做。非常感谢任何信息。
这与今天其他人遇到的问题相同!一个简单的错误。
替换:
namespace blah\PackageName;
与:
namespace blah;
完整的 class 名称包括名称空间和 class 名称。所以基本上你的 class 实际上是 blah\PackageName\Packagename
可能会从 composer.json 中取出 Packagename,这取决于您的需要,如果您更改它,请记住 运行 composer dumpautoload