相关疑难解决方法(0)

关键字"use"如何在PHP中工作,我可以用它导入类吗?

我有一个类的文件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)

我知道我可以使用requireinclude关键字包含一个类的文件:

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)

但我想导入类而不使用requireinclude.我试图了解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 import include

126
推荐指数
5
解决办法
15万
查看次数

在PHP中使用vs包含

我正在努力弄清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。

php phpunit namespaces include

6
推荐指数
2
解决办法
9103
查看次数

标签 统计

include ×2

php ×2

import ×1

namespaces ×1

phpunit ×1