在PHPUnit文档中,我遇到了一些我不熟悉的PHP语法。
https://phpunit.readthedocs.io/en/7.3/database.html#asserting-the-result-of-a-query
<?php
use PHPUnit\Framework\TestCase;
use PHPUnit\DbUnit\TestCaseTrait;
class ComplexQueryTest extends TestCase
{
use TestCaseTrait;
public function testComplexQuery()
{
$queryTable = $this->getConnection()->createQueryTable(
'myComplexQuery', 'SELECT complexQuery...'
);
$expectedTable = $this->createFlatXmlDataSet("complexQueryAssertion.xml")
->getTable("myComplexQuery");
$this->assertTablesEqual($expectedTable, $queryTable);
}
}
use TestCaseTrait;
是我不明白的那一行。我知道顶部的use
代用名称允许使用类而不使用完整的名称空间,但是我不知道它在这里做什么。在PHP中搜索use
会得到有关该功能的结果。
答案 0 :(得分:1)
易于解释(不是主要内容,而是示例): 它用于变量和方法,您必须反复编写。没有复杂的逻辑!
特质:
trait Name {
protected $name;
getName() {
return $this->name;
}
setName($name) {
$this->name = $name;
}
}
class test {
use Name;
/* In background it looks like that (without comment ;) */
//protected $name;
//getName() {
// return $this->name;
//}
//setName($name) {
// $this->name = $name;
//}
}
10个其他需要这些变量和方法的类,可以使用它们。
在此测试案例中,大多数情况下您需要使用相同的方法,这就是为什么它们只是这样包含它们的原因。
答案 1 :(得分:0)
将其保留在php.net上的注释中以进行澄清。以下注释使我想到了此功能的术语“特征”。 (我应该猜出这个名字是正确的。)https://secure.php.net/manual/en/language.namespaces.importing.php#119919
引用手册:
从PHP 5.4.0开始,PHP实现了一种称为Traits的代码重用方法。
特质是一种在单一继承语言中重用代码的机制 例如PHP。性状旨在减少单身的某些限制 通过使开发人员能够在内部自由重用方法集来继承 几个独立的班级生活在不同的班级层次结构中。的 特性和类组合的语义是通过以下方式定义的 这降低了复杂性,并避免了相关的典型问题 具有多个继承和Mixins。
一项特质类似于一个班级,但仅用于分组 细致且一致的功能。这不可能 自己实例化特质。它是传统的补充 继承并实现行为的横向组合;那是, 类成员的应用而无需继承。
我从没听说过这个功能,很有趣。