小编Leo*_*los的帖子

phpunit 可以比较两个不同的对象,断言它们的属性相同吗?

下面的测试通过了,因为true == 1,但我想编写一个失败的测试,因为true !== 1

$stdClass1 = new stdClass();
$stdClass1->foo = true;
$stdClass2 = new stdClass();
$stdClass2->foo = 1;

$this->assertEquals(
    $stdClass1,
    $stdClass2
);
Run Code Online (Sandbox Code Playgroud)

以下测试失败,因为这两个变量没有引用同一个对象,但我想编写一个自 以来通过的测试true === true

$stdClass1 = new stdClass();
$stdClass1->foo = true;
$stdClass2 = new stdClass();
$stdClass2->foo = true;

$this->assertSame(
    $stdClass1,
    $stdClass2
);
Run Code Online (Sandbox Code Playgroud)

因此,phpunit 是否提供了一种本机方法来比较两个不同的对象,断言它们的属性相同?

我见过一些解决方案(黑客),它们将对象转换为数组然后使用$this->assertEqualsCanonicalizing(),或者序列化对象然后使用this->assertEquals(),等等。然而,这些解决方案对于具有由几种不同数据类型组成的属性的大型对象来说并不理想。分别是,当尝试转换数据类型(例如 DateTime 到 float)时,规范化会失败,或者序列化后产生的错误消息长达数百行,使得查找差异变得很乏味。

因此,phpunit 是否提供了一种本机方法来比较两个不同的对象,断言它们的属性相同?

目前,我们唯一可靠的解决方案是为每个属性编写特定的测试。也许 phpunit 的这个决定是故意的,以便强制进行更健壮的单元测试。

$this->assertSame(
    $stdClass1->foo,
    $stdClass2->foo
);
Run Code Online (Sandbox Code Playgroud)

尽管我们需要循环遍历所有属性并assertSame针对每个属性,但上述测试可以按需要进行比较对象的目的。

phpunit unit-testing object comparator

12
推荐指数
0
解决办法
4814
查看次数

cron,crontab和cronjob之间的区别?

从技术上讲,是什么之间的区别cron,crontab以及cronjob

从我可以收集到的,cron是服务器上的实用程序,crontab是包含时间间隔和命令的文件,并且cronjob是实际命令(或包含命令的文件/脚本).

它是否正确?

cron crontab cron-task

9
推荐指数
3
解决办法
6335
查看次数

require_once dirname(__ FILE__)的目的是什么......?

我正在使用具有以下代码的php库: require_once dirname(__FILE__) . '/config.php';

从我读过的,dirname(__FILE__)指向当前目录.

那么写作会不会更容易require_once 'config.php';

我唯一的猜测是包括dirname(__FILE__)确保require_once函数使用绝对路径而不是相对路径.

php file require-once dirname

6
推荐指数
1
解决办法
1万
查看次数

垂直对齐底部div与不同大小的文本

在弹性框中,如何在具有两种不同字体大小的两个不同div中垂直对齐文本的底边?

这是一个非常简单的jsfiddle:http: //jsfiddle.net/aegh74dr/1/

您会注意到弹性框中的两个div包含不同大小的字体.该align-items属性设置为flex-end,但两个不同的div不在底部对齐.

谢谢!

css font-size vertical-alignment css3 flexbox

6
推荐指数
1
解决办法
2259
查看次数

提交表单后我应该使用 301、302 或 303 重定向吗?

我正在用 php 创建一个简单的问答留言板。当有人提交问题的答案时,php 脚本会将用户重定向到原始问题,并在页面底部显示更新的答案。

\n\n

在这种情况下,使用 301、302 或 303 重定向会更好吗?我正在考虑 302 重定向,因为重定向不是永久的或静态的 \xe2\x80\x93 重定向取决于发送到提交脚本的参数。不过,我也看到某些表格推荐使用 303。

\n

php forms redirect http-status-code-301 http-status-code-302

5
推荐指数
1
解决办法
2617
查看次数

在 Mac 上的 div 中垂直对齐表情符号

是否可以在 Mac 上的 div 中完美地垂直对齐表情符号?

在此处输入图片说明

正如您在屏幕截图中看到的,div 高 50 像素,表情符号高 50 像素,但头部突出在 div 上方,而不是完全垂直居中。

这是小提琴

如您所见,我的 div 很简单,仅包含表情符号的代码:

<div>&#x1F464;</div>
Run Code Online (Sandbox Code Playgroud)

我尝试向 div 添加一堆垂直居中样式无济于事:

div {
  width: 50px;
  height: 50px;
  background-color: #f00;
  font-size: 50px;
  line-height: 50px;
  display: flex;
  align-self: center;
  justify-content: center;
  align-items: center;
  vertical-align: center;
}
Run Code Online (Sandbox Code Playgroud)

奇怪的是,上面的代码在 Windows 上呈现得非常好,因为它们的表情符号与字体的基线对齐。

html css vertical-alignment emoji

5
推荐指数
1
解决办法
1492
查看次数

可以在WHERE子句中使用MySQL临时变量吗?

在MySQL中,可以在WHERE子句中使用临时变量吗?

例如,在以下查询中:

SELECT `id`, @var := `id` * 2 FROM `user`
Run Code Online (Sandbox Code Playgroud)

@var成功设置为`id`值的两倍

但是,如果我尝试将结果集过滤为仅包含@var小于10的结果:

SELECT `id`, @var := `id` * 2 FROM `user` WHERE @var < 10
Run Code Online (Sandbox Code Playgroud)

然后我没有结果.

如何根据@var的值过滤结果?

mysql variables temporary where where-clause

4
推荐指数
1
解决办法
1万
查看次数

4
推荐指数
1
解决办法
130
查看次数

Zend Framework 3-基于查询字符串的路由

在Zend Framework 3中,是否可以根据URL是否包含查询字符串来路由到控制器?

例如,我有以下两个URL:

/users
/users?name=Bob
Run Code Online (Sandbox Code Playgroud)

我想第一条路线叫a UsersController和第二条路线叫a NameController

这可能吗?

php routes zend-framework3

4
推荐指数
1
解决办法
260
查看次数

如果函数同时包含return和yield,为什么php会返回一个空的Generator?

// Returns empty generator as expected.
function yieldOnly(): Generator
{
    yield;
}

// Throws TypeError as expected.
function returnOnly(): Generator
{
    return;
}

// Returns empty generator???
function returnAndYield(): Generator
{
    return;
    yield;
}
Run Code Online (Sandbox Code Playgroud)

的返回值returnAndYield()是一个空的Generator,尽管我期望它抛出一个TypeError。这是预期的行为吗?我在任何地方都找不到它的记录,我想知道这是否可能是一个应该报告的错误。

php yield generator typeerror type-hinting

3
推荐指数
1
解决办法
853
查看次数