我有一个类的文件Resp.路径是:
C:\xampp\htdocs\One\Classes\Resp.php
Run Code Online (Sandbox Code Playgroud)
我index.php在这个目录中有一个文件:
C:\xampp\htdocs\Two\Http\index.php
Run Code Online (Sandbox Code Playgroud)
在这个index.php文件中,我想实例化一个类Resp.
$a = new Resp();
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用require或include关键字包含一个类的文件:
require("One\Classes\Resp.php"); // I've set the include_path correctly already ";C:\xampp\htdocs". It works.
$a = new Resp();
Run Code Online (Sandbox Code Playgroud)
但我想导入类而不使用require或include.我试图了解use关键字的工作原理.我尝试了这些步骤,但没有任何作用:
use One\Classes\Resp;
use xampp\htdocs\One\Classes\Resp;
use htdocs\One\Classes\Resp;
use One\Classes;
use htdocs\One\Classes; /* nothing works */
$a = new Resp();
Run Code Online (Sandbox Code Playgroud)
它说:
Fatal error: Class 'One\Classes\Resp' not found in C:\xampp\htdocs\Two\Http\index.php
Run Code Online (Sandbox Code Playgroud)
关键字如何use运作?我可以用它来导入课程吗?
我正在努力弄清PHP名称空间并使用PHPUnit进行测试。
当我phpunit test.php在Windows的命令行中运行时,来自Codewars的这些测试通过:
<?php
require 'solution.php';
use PHPUnit\Framework\TestCase;
class myTests extends TestCase {
public function testExamples() {
$this->assertEquals(pair_sum([1,9,2,8,3,7,4,6,5,5,13,14,11,13,-1],10),6);
$this->assertEquals(pair_sum([1,2,3,1],3),1);
$this->assertEquals(pair_sum([1,3,2,2],4),2);
$this->assertEquals(pair_sum([1],4),false);
$this->assertEquals(pair_sum([2,3,10,-5],5),2);
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当我注释掉时,由于没有引用所需的类/函数,因此use PHPUnit\Framework\TestCase;我觉得Class 'TestCase' not found这很有意义。
令我困惑的是,关于命名空间的很多答案都声称use关键字不能替代关键字,include/require并且类仍需要包含/自动加载(?)。
我在这里没有使用任何自动加载功能-只是solution.php文件和文件中的上述测试test.php。
有人可以解释一下我在这里缺少什么吗?没有任何明确的PHPunit功能,测试如何进行?
我应该提到我已经通过Composer在全球安装了PHPUnit。