小编The*_*der的帖子

如何测试字符串是否包含PHPUnit中的另一个字符串?

我似乎无法在PHPUnit中找到一个断言,只是测试一个字符串是否包含在另一个字符串中的某个地方.试着这样做:

public function testRecipe() {

    $plaintext = get_bread_recipe();

    $this->assertStringContains('flour', $plaintext);

}
Run Code Online (Sandbox Code Playgroud)

我会用什么真正的断言而不是assertStringContains?在这种情况下,我宁愿不必担心正则表达式,因为绝对不需要它.

这很简单,必须有一些我忽略的东西,但我无法理解!有趣的是assertStringStartsWith(),有assertStringEndsWith()!

更新:我知道strpos() !== false可以使用,但我正在寻找更清洁的东西.如果我只是使用vanilla PHP函数,那么所有断言的重点是什么......

php phpunit

61
推荐指数
3
解决办法
3万
查看次数

在Windows上执行Git挂钩

我在Windows上执行Git挂钩时遇到问题.我有一个简单的仓库,在它的"hooks"文件夹中,我将以下内容放入"更新"和"预推"文件中,但PHP脚本永远不会被执行:

"c:/Programs/PHP/php.exe" c:/Data/Scripts/git-pre-push.phpcli %1
Run Code Online (Sandbox Code Playgroud)

有关为什么不执行PHP脚本的任何想法?

在Git控制台窗口中,当我尝试将某些内容推送到裸仓库时,我会看到以下内容:

POST git-receive-pack (437 bytes)
remote: error: hook declined to update refs/heads/master
To https://myuser@mydomain/samplerepo
! [remote rejected] master -> master (hook declined)
error: failed to push some refs to 'https://myuser@mydomain/samplerepo'
Run Code Online (Sandbox Code Playgroud)

...所以我知道"更新"以某种方式被执行.当我删除该文件时,推送工作正常.

php windows git hook

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

让 Guzzle 信任自签名证书?

对于Guzzle HTTP 客户端,我知道您可以将new GuzzleClient(['verify' => false])其设置为不检查证书,例如。当您使用自签名证书时。但是我怎样才能让它接受并信任特定的自签名证书,这样你就不会只开放任何证书,而只开放一个特定的证书 - 这可能吗?

php certificate self-signed guzzle self-signed-certificate

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

如何更改Yii2中所有控制器的默认布局?

如何在Yii2中全局更改默认布局(=对于所有控制器和视图)?我想保留main.php布局,以防我以后想要使用它.

php yii2

8
推荐指数
1
解决办法
9411
查看次数

Yii2:如何强制使用fallback MessageFormatter方法?

我的网站是一个托管服务提供商,它在服务器上提供了MessageFormatter类(Linux,PHP 7.0.27),但它是一个旧的ICU版本(4.2.1),它不支持我的消息{number,plural,=0{# available} =1{# available} other{# available}}并给出错误:

消息模式无效:构造函数失败

msgfmt_create:消息格式化程序创建失败:U_ILLEGAL_CHARACTER

...因为=1=2符号.

我无法对服务器进行更改,因此我如何强制使用Yii2提供的后备方法,哪种方法可以正常工作?

php internationalization yii2

7
推荐指数
1
解决办法
178
查看次数

回答PHP中命令行上运行的程序提出的问题

我想知道如何与我在命令行PHP脚本中运行的程序进行交互.场景是:

  1. 开始执行程序.
  2. 阅读输出直到询问问题(通过阅读STDOUT我猜).
  3. 输入答案并按Enter键(我猜是写STDIN).用户不要输入它,脚本已经知道通过读取和解释步骤2的输出来回答什么.
  4. 再次阅读输出,直到询问新问题.
  5. 再次键入答案,然后按Enter键.同样,脚本知道这一切,不会发生任何用户输入.
  6. 此问题/答案方案重复x次,直到程序结束.

如何编写执行此操作的PHP脚本?我想我可能想用,proc_open()但我无法弄清楚如何.我认为它会是这样的,但它当然不起作用:

$descriptorspec = array(
    0 => array('pipe', 'r'),  //STDIN
    1 => array('pipe', 'w'),  //STDOUT
    2 => array('pipe', 'r'),  //STDERR
);
$process = proc_open('mycommand', $descriptorspec, $pipes, null, null);
if (is_resource($process)) {
    // Get output until first question is asked
    while ($buffer = fgets($pipes[1])) {
        echo $buffer;
    }
    if (strpos($buffer, 'STEP 1:') !== false) {
        fwrite($pipes[0], "My first answer\n");  //enter the answer
    } else {
        die('Unexpected last line before question');
    }

    // Get …
Run Code Online (Sandbox Code Playgroud)

php command-line-interface execution

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

Javascript:要从sessionStorage检索所有密钥吗?

是否无法检索我存储在sessionStorage(或localStorage)中的所有键/对象?

如果我完成了sessionStorage.name = 'John'sessionStorage.city = 'New York',是否没有办法获取显示键name和的列表city

javascript session session-storage local-storage

5
推荐指数
2
解决办法
7738
查看次数

如何使用搜索和替换通过 API 修改 Google Docs 文档?

我需要一个示例,说明如何通过 API 使用 Google 文档中的现有文本修改现有文档。文档只展示了如何插入和删除文本,但没有展示如何更新一直在网上疯狂地寻找示例或如何做到这一点的方向,但没有运气。

php google-api google-docs google-docs-api

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

Yii2-如何强制响应JSON格式化程序使用对象而不是数组?

我知道可以设置,Yii::$app->response->format = \yii\web\Response::FORMAT_JSON但是如何设置JSON编码标志,JSON_FORCE_OBJECT以便将所有数组都编码为对象?

php json httpresponse yii yii2

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

Yii2:自定义setter方法/数据转换在ActiveRecord上不起作用?

我正在尝试通过setUsr_firstname对名为的属性使用setter方法对属性进行数据转换usr_firstname.

class User extends ActiveRecord implements IdentityInterface {

    public function rules() {
        return [
            [['usr_firstname', 'usr_lastname', ... ], 'required'],
            ...
        ];
    }

    ...

    public function setUsr_firstname($value) {
        $this->usr_firstname = fix_wrong_title_case($value);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我做以下事情:

$model = new User(['scenario' => User::SCENARIO_REGISTER]);
$model->usr_firstname = 'John';
Run Code Online (Sandbox Code Playgroud)

但是从不调用setter方法!我试过将方法命名为各种各样的东西 - 例如.setUsrFirstname - 但没有任何作用.我如何让它工作?

UPDATE

弄清楚它不适用于任何ActiveRecord属性,在属性名称中有或没有下划线.

php activerecord yii2 yii2-model

2
推荐指数
1
解决办法
1509
查看次数

Yii2:是否可以更改迁移表的默认名称?

默认情况下 Yii 命名迁移表,migration但可以更改此默认值吗?最好也不必在每个迁移文件中指定它......

php migration database-migration yii2

2
推荐指数
1
解决办法
1044
查看次数

Yii2:如何格式化 ActiveField 中的值?

在我的表格上,我有这个:

echo $form->field($model, 'amount')->textInput();
Run Code Online (Sandbox Code Playgroud)

如果来自数据库的值是42.5我希望在输入字段中将其格式化为两位小数,如下所示42.50。我怎么做?

我在ActiveField文档中找不到任何有关格式的信息...

php yii2

2
推荐指数
1
解决办法
4051
查看次数

FormKit:如何进行异步/服务器端验证?

如何使用FormKit(使用 Vue3)进行异步/服务器端验证?不仅在提交时,而且在用户从输入中移除焦点之后。

基本验证示例:

<FormKit
  type="text"
  label="Number"
  validation="required|number|between:20,50"
  validation-visibility="live"
  help="Enter a number between 20 and 50."
/>
Run Code Online (Sandbox Code Playgroud)

除了文档提到一次异步之外,在任何地方都找不到任何示例或提及。

javascript validation vue.js vuejs3 formkit

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