小编mtm*_*ald的帖子

如何在Codeception功能测试中使用PHPUnit断言方法?

我正在使用Codeception进行Laravel 4 PHP应用程序的单元,功能和验收测试.

我的单元测试看起来如下:

use Codeception\Util\Stub;
class ExampleTest extends \Codeception\TestCase\Test 
{
 public function testExample()
 {
  $example = true;
  $this->assertSame($example, true);
 }
}
Run Code Online (Sandbox Code Playgroud)

我的功能测试看起来像这样:

use \TestGuy;
class ExampleCest
{
 public function example(TestGuy $I)
 { 
  $I->amOnPage('/auth/login');
  $I->see('Sign in');
 }
}
Run Code Online (Sandbox Code Playgroud)

但我也想在我的功能测试中使用PHPUnit断言方法.但是当我尝试时,我得到了这个错误:

调用未定义的方法ExampleCest :: assertSame()

如何在Codeception功能测试中使用PHP断言方法?

phpunit codeception

13
推荐指数
3
解决办法
7540
查看次数

为什么getenv()仅在从终端运行时返回变量,而不是通过Web服务器

我正在尝试在我的PHP应用程序中使用自定义环境变量进行环境检测.我在/ etc/environment中设置了系统范围的变量,重新启动,并检查它是否通过终端使用printenv可见.

我还检查了在命令行运行PHP时它是否可见:

php -r 'echo getenv("LOCAL_DEVELOPMENT");'

//returns 'true' as expected
Run Code Online (Sandbox Code Playgroud)

但是当我从网页脚本尝试时,找不到变量:

var_dump(getenv("LOCAL_DEVELOPMENT"));

//returns 'boolean false' (not expected)
Run Code Online (Sandbox Code Playgroud)

我正在使用Ubuntu 12.04 LTS,PHP 5.4和Apache 2.2.

为什么变量在Web脚本中不可见,我该如何解决?

php

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

旋转文本并将其容器缩小到新宽度

我想旋转一些文本进行垂直显示(y轴图表标签).文本可以是任何可变长度(但总是在一行上).

我试图使用CSS3转换旋转(参见JSFiddle):

.rotate {
   transform: rotate(270deg);
}
Run Code Online (Sandbox Code Playgroud)

但是,即使在旋转之后,元素的原始宽度和高度也会保留,如规范中所述:

在HTML命名空间中,transform属性不会影响转换元素周围内容的流.

这意味着元素的容器宽度会根据标签文本长度而扩展,从而影响相邻图表的位置.

如何旋转文本并将其容器缩小到新宽度?任何解决方案都会有所帮助,包括JavaScript/jQuery解决方案或替代方法.

css transform css3

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

在Laravel 4中替换File :: mime()(从文件扩展名获取mime类型)

Laravel 3有一个File :: mime()方法,可以很容易地从其扩展名中获取文件的mime类型:

$extension = File::extension($path);
$mime = File::mime($extension);
Run Code Online (Sandbox Code Playgroud)

升级到Laravel 4时出现错误:

调用未定义的方法Illuminate\Filesystem\Filesystem :: mime()

我也看不到在Filesystem API文档中提到mime类型.

在Laravel 4中获取文件mime类型的推荐方法是什么(请注意这不是用户上传的文件)?

php laravel laravel-4

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

如何使用Laravel查询构建器在WHERE条件周围添加括号

我正在使用Laravel查询构建器根据用户的过滤器选择动态过滤数据:

 $query = DB::table('readings');
 foreach ($selections as $selection) {
   $query->orWhere('id', $selection);
 }
 $query->whereBetween('date', array($from, $to));
 $query->groupBy('id');
Run Code Online (Sandbox Code Playgroud)

当我检查SQL时,我得到这样的东西:

select count(*) as `count` from `readings` where `id` = 1 or id` = 2 and `date` between "2013-09-01" and "2013-09-31" group by `id`;
Run Code Online (Sandbox Code Playgroud)

但我需要的是这样的东西(括号或语句旁边):

select count(*) as `count` from `readings` where (`id` = 1 or id` = 2) and `date` between "2013-09-01" and "2013-09-31" group by `id`;
Run Code Online (Sandbox Code Playgroud)

如何使用Laravel查询生成器在WHERE条件周围添加括号?

mysql laravel

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

验证:如何在输入为空时设置不需要"null"的字段

我有一个如下所示的验证规则:

$rules = ['target' => 'numeric'];
Run Code Online (Sandbox Code Playgroud)

这不是必填字段.如果未在输入中指定值(即Input :: get('target')==''),我希望在数据库中将该字段设置为NULL.

目前,上述规则通过,并且在没有数字输入的情况下,它在数据库中设置为0.

什么是最好的解决方案?

laravel laravel-4

8
推荐指数
2
解决办法
2万
查看次数

针对将查询生成器与DB :: raw()组合在一起的查询,防止SQL注入

在Laravel 4中,我想保护一些复杂的数据库查询不受SQL注入的影响.这些查询使用查询构建器和DB :: raw()的组合.这是一个简化的例子:

$field = 'email';
$user = DB::table('users')->select(DB::raw("$field as foo"))->whereId(1)->get();
Run Code Online (Sandbox Code Playgroud)

我读过Chris Fidao的教程,可以将一系列绑定传递给select()方法,因此可以通过使用准备语句来正确地防止SQL注入.例如:

$results = DB::select(DB::raw("SELECT :field FROM users WHERE id=1"), 
               ['field' => $field]
           ));
Run Code Online (Sandbox Code Playgroud)

这样可行,但该示例将整个查询放入原始语句中.它不会将查询生成器与DB :: raw()组合在一起.当我尝试使用第一个例子时类似的东西:

$field = 'email';
$user = DB::table('users')->select(DB::raw("$field as foo"), ['field' => $field])
             ->whereId(1)->get();
Run Code Online (Sandbox Code Playgroud)

...然后我得到一个错误:strtolower()期望参数1是字符串,给定数组

对于将查询构建器与DB :: raw()组合在一起的查询,阻止SQL注入的正确方法是什么?

laravel laravel-4

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

在MySQL中添加列 - 如何将NULL视为0

我有简单的表(测试),我需要执行一些添加(我想得到一行总计和一列总数).

 id  var1  var2
 1   NULL  NULL
 2   10    NULL
Run Code Online (Sandbox Code Playgroud)

对于列总计,求和按预期工作(在添加中忽略NULL):

SELECT SUM(var1) FROM test

10
Run Code Online (Sandbox Code Playgroud)

对于行总计,加法不会忽略NULL(如果任何列为NULL,则结果为NULL):

SELECT var1+var2 FROM test

NULL
NULL
Run Code Online (Sandbox Code Playgroud)

我希望它返回的是:

SELECT var1+var2 FROM test

NULL
10
Run Code Online (Sandbox Code Playgroud)

有没有办法让MySQL在添加中将NULL视为0?

mysql sql

6
推荐指数
2
解决办法
4118
查看次数

如何使用promises异步读取多个文件,然后继续

我是承诺并使用rsvp实现的新手.

我想异步读取文件列表,然后只有在读取了所有文件后才进入另一个任务.

我已经有了基本结构来读取一个文件,并链接到下一个任务:

var loadFile = function (path) {
    return new rsvp.Promise(function (resolve, reject) {
        fs.readFile (path, 'utf8', function (error, data) {
            if (error) {
                reject(error);
            }
            resolve(data);
        });
    });
};

loadFile('src/index.txt').then(function (data) {
    console.log(data);
    return nextTask(data);
}).then(function (output) {
    //do something with output
}).catch(function (error) {
    console.log(error);
});
Run Code Online (Sandbox Code Playgroud)

我想做这样的事情:

loadFile(['src/index.txt', 'src/extra.txt', 'src/another.txt']).then( ...
Run Code Online (Sandbox Code Playgroud)

我在文档中看到过承诺承诺的数组,但我不知道哪个是最相关的,或者如何使用它们.我需要在上面的问题的上下文中使用它们的一个例子来理解它们.

javascript node.js promise rsvp.js rsvp-promise

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

如何在数据库设计中对属性单元进行建模?

我需要设计一个数据库表,其中大多数属性都有单位。例如:

Readings
--------

id   load (kW)   fuel_consumption (tonnes) - etc
1    1154        89.4
2    1199        54.2
Run Code Online (Sandbox Code Playgroud)

在设计中捕获单元的推荐方法是什么?例如,我可以:

  • 在属性名称中存储单位,例如 load_kW 和fuel_conspiration_tonnes
  • 将单位存储在单独的表中,例如每个值都成为另一个表的外键,其中包含值和单位的列。
  • 存储在数据库外部:例如在业务逻辑中或在文档中
  • 还有其他人吗?

我碰巧使用 MySQL,但我认为这是一个通用的数据库规范化问题。

mysql database database-design normalization database-normalization

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