我试图使用PHP解析JSON文件.但我现在被困住了.
这是我的JSON文件的内容:
{
"John": {
"status":"Wait"
},
"Jennifer": {
"status":"Active"
},
"James": {
"status":"Active",
"age":56,
"count":10,
"progress":0.0029857,
"bad":0
}
}
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止所尝试的:
<?php
$string = file_get_contents("/home/michael/test.json");
$json_a = json_decode($string, true);
echo $json_a['John'][status];
echo $json_a['Jennifer'][status];
Run Code Online (Sandbox Code Playgroud)
但是,因为我不知道的名字(例如'John','Jennifer')和所有可用键和值(如'age','count')事前,我想我需要创建一些foreach循环.
我会很感激这样的例子.
我开始使用作曲家,我对它知之甚少,并且对Web应用程序开发有一点经验.
我只是通过Nettuts + Tutorial,所以我有关于作曲家的基本问题.
{
"require": {
"laravel/framework": "4.0.*",
"way/generators": "dev-master",
"twitter/bootstrap": "dev-master",
"conarwelsh/mustache-l4": "dev-master"
},
"require-dev": {
"phpunit/phpunit": "3.7.*",
"mockery/mockery": "0.7.*"
},
"autoload": {
"classmap": [
"app/commands",
"app/controllers",
"app/models",
"app/database/migrations",
"app/database/seeds",
"app/tests/TestCase.php"
]
},
"scripts": {
"post-update-cmd": "php artisan optimize"
},
"minimum-stability": "dev"
}
Run Code Online (Sandbox Code Playgroud)
我需要检查数组中的所有值是否相同.
例如:
$allValues = array(
'true',
'true',
'true',
);
Run Code Online (Sandbox Code Playgroud)
如果数组中的每个值都等于'true'那么我想要回显'all true'.如果数组中的任何值等于,'false'那么我想回显'some false'
有关如何做到这一点的任何想法?
为了忽略使用PHPUnit的测试,应该在PHP测试方法旁边放置什么属性?
我知道对于NUnit,属性是:
[Test]
[Ignore]
public void IgnoredTest()
Run Code Online (Sandbox Code Playgroud) 我有一个我需要模拟的课程:
class MessagePublisher
{
/**
* @param \PhpAmqpLib\Message\AMQPMessage $msg
* @param string $exchange - if not provided then one passed in constructor is used
* @param string $routing_key
* @param bool $mandatory
* @param bool $immediate
* @param null $ticket
*/
public function publish(AMQPMessage $msg, $exchange = "", $routing_key = "", $mandatory = false, $immediate = false, $ticket = null)
{
if (empty($exchange)) {
$exchange = $this->exchangeName;
}
$this->channel->basic_publish($msg, $exchange, $routing_key, $mandatory, $immediate, $ticket);
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用Mockery 0.7.2
$mediaPublisherMock = …Run Code Online (Sandbox Code Playgroud) 我知道存根验证状态,模拟验证行为.
如何在PHPUnit中进行模拟以验证方法的行为?Phpunit没有验证方法(verify()),而且我不知道如何使moks成为PHPUnit.
在文档中,创建存根很好地解释了:
// Create a stub for the SomeClass class.
$stub = $this->createMock(SomeClass::class);
// Configure the stub.
$stub
->method('doSomething')
->willReturn('foo');
// Calling $stub->doSomething() will now return 'foo'.
$this->assertEquals('foo', $stub->doSomething());
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,我正在验证状态,说回复一个答案.
如何创建模拟和验证行为的示例?
我在library文件夹中创建了一个文件app夹来添加我自己的类.
这是文件的内容app/library/helper.php:
<?php
namespace Library;
class MyHelper
{
public function v($arr)
{
var_dump($arr);
}
}
Run Code Online (Sandbox Code Playgroud)
我将命名空间添加到composer.json:
然后我跑了
$ composer dump-autoload
Run Code Online (Sandbox Code Playgroud)
但它似乎没有任何影响.
文件
vendor/composer/autoload_psr4.phpvendor/composer/autoload_classmap.php没改变.
如果我尝试创建一个实例MyHelper,Laravel会报告以下错误:
我不确定我做错了什么.
我试图用Guzzle 6异步下载文件,但文档看起来很模糊,找不到任何有用的例子.
我不确定的是 - 我该如何保存收到的数据?
目前我这样做:
$successHandler = function (Response $response, $index) use ($files) {
$file = fopen($files[$index], 'a');
$handle = $response->getBody();
while (!$handle->eof()) {
fwrite($file, $handle->read(2048));
}
fclose($file);
};
Run Code Online (Sandbox Code Playgroud)
这真的是异步吗?
因为如果我们进入一个回调并开始循环,我们如何同时从其他回调中获取数据呢?
在创建请求时,是否有更直接的方式来判断响应应存储在何处?(或直接传递流).
我正在使用Symfony 3.3和资产包.我在config.yml中有这个:
assetic:
debug: '%kernel.debug%'
use_controller: '%kernel.debug%'
filters:
cssrewrite: ~
typescript:
bin: "%kernel.root_dir%/../node_modules/typescript/bin/tsc"
apply_to: "\\.ts$"
Run Code Online (Sandbox Code Playgroud)
当我尝试编译我的TypeScript文件时,我收到此错误:
Output:
../../../../private/var/folders/94/45yn02792ksfglm12pjxxlp00000gn/T/assetic_typescript_in59bccf08e6357/my-form.ts.ts(6,1): error TS6131: Cannot compile modules using option 'out' unless the '--module' flag is 'amd' or 'system'.
../../../../private/var/folders/94/45yn02792ksfglm12pjxxlp00000gn/T/assetic_typescript_in59bccf08e6357/my-form.ts.ts(6,22): error TS2307: Cannot find module './my-obj.model'.
Run Code Online (Sandbox Code Playgroud)
这在我使用像这样的导入语句后发生import { Obj } from './my-obj.model';.如果我不使用import语句,ts编译工作正常.
如何添加资产的TypeScript过滤器--module system参数或tsconfig.json?
如何创建要由fix带选项的命令运行的自定义规则集--rules=@custom?
像@PSR1,@PSR2,@Symfony,@PHP56Migration,@PHP70Migration,@PHP71Migration制成。
php-cs-fixer版本:2.2.3
仅通过插入供应商代码- vendor/friendsofphp/php-cs-fixer/src/RuleSet.php:
private $setDefinitions = array(
'@custom' => [
'some_custom_fixer` => true,
]
)
Run Code Online (Sandbox Code Playgroud)
符合我的预期,但RuleSet确实如此final class。setDefinitions使用自定义配置时,有没有方法可以覆盖或扩展.php_cs?
php ×7
phpunit ×3
composer-php ×2
mocking ×2
symfony ×2
unit-testing ×2
arrays ×1
assetic ×1
autoload ×1
guzzle ×1
guzzle6 ×1
json ×1
laravel ×1
nunit ×1
php-cs-fixer ×1
silex ×1
stubs ×1
testing ×1
typescript ×1