我似乎无法在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函数,那么所有断言的重点是什么......
我在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)
...所以我知道"更新"以某种方式被执行.当我删除该文件时,推送工作正常.
对于Guzzle HTTP 客户端,我知道您可以将new GuzzleClient(['verify' => false])其设置为不检查证书,例如。当您使用自签名证书时。但是我怎样才能让它接受并信任特定的自签名证书,这样你就不会只开放任何证书,而只开放一个特定的证书 - 这可能吗?
如何在Yii2中全局更改默认布局(=对于所有控制器和视图)?我想保留main.php布局,以防我以后想要使用它.
我的网站是一个托管服务提供商,它在服务器上提供了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脚本中运行的程序进行交互.场景是:
如何编写执行此操作的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) 是否无法检索我存储在sessionStorage(或localStorage)中的所有键/对象?
如果我完成了sessionStorage.name = 'John'和sessionStorage.city = 'New York',是否没有办法获取显示键name和的列表city?
我需要一个示例,说明如何通过 API 使用 Google 文档中的现有文本修改现有文档。文档只展示了如何插入和删除文本,但没有展示如何更新。一直在网上疯狂地寻找示例或如何做到这一点的方向,但没有运气。
我知道可以设置,Yii::$app->response->format = \yii\web\Response::FORMAT_JSON但是如何设置JSON编码标志,JSON_FORCE_OBJECT以便将所有数组都编码为对象?
我正在尝试通过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属性,在属性名称中有或没有下划线.
默认情况下 Yii 命名迁移表,migration但可以更改此默认值吗?最好也不必在每个迁移文件中指定它......
在我的表格上,我有这个:
echo $form->field($model, 'amount')->textInput();
Run Code Online (Sandbox Code Playgroud)
如果来自数据库的值是42.5我希望在输入字段中将其格式化为两位小数,如下所示42.50。我怎么做?
我在ActiveField文档中找不到任何有关格式的信息...
如何使用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)
除了文档提到一次异步之外,在任何地方都找不到任何示例或提及。
php ×11
yii2 ×6
javascript ×2
activerecord ×1
certificate ×1
execution ×1
formkit ×1
git ×1
google-api ×1
google-docs ×1
guzzle ×1
hook ×1
httpresponse ×1
json ×1
migration ×1
phpunit ×1
self-signed ×1
session ×1
validation ×1
vue.js ×1
vuejs3 ×1
windows ×1
yii ×1
yii2-model ×1