我正在使用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断言方法?
我正在尝试在我的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脚本中不可见,我该如何解决?
我想旋转一些文本进行垂直显示(y轴图表标签).文本可以是任何可变长度(但总是在一行上).
我试图使用CSS3转换旋转(参见JSFiddle):
.rotate {
transform: rotate(270deg);
}
Run Code Online (Sandbox Code Playgroud)
但是,即使在旋转之后,元素的原始宽度和高度也会保留,如规范中所述:
在HTML命名空间中,transform属性不会影响转换元素周围内容的流.
这意味着元素的容器宽度会根据标签文本长度而扩展,从而影响相邻图表的位置.
如何旋转文本并将其容器缩小到新宽度?任何解决方案都会有所帮助,包括JavaScript/jQuery解决方案或替代方法.
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类型的推荐方法是什么(请注意这不是用户上传的文件)?
我正在使用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条件周围添加括号?
我有一个如下所示的验证规则:
$rules = ['target' => 'numeric'];
Run Code Online (Sandbox Code Playgroud)
这不是必填字段.如果未在输入中指定值(即Input :: get('target')==''),我希望在数据库中将该字段设置为NULL.
目前,上述规则通过,并且在没有数字输入的情况下,它在数据库中设置为0.
什么是最好的解决方案?
在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注入的正确方法是什么?
我有简单的表(测试),我需要执行一些添加(我想得到一行总计和一列总数).
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?
我是承诺并使用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)
我在文档中看到过承诺和承诺的数组,但我不知道哪个是最相关的,或者如何使用它们.我需要在上面的问题的上下文中使用它们的一个例子来理解它们.
我需要设计一个数据库表,其中大多数属性都有单位。例如:
Readings
--------
id load (kW) fuel_consumption (tonnes) - etc
1 1154 89.4
2 1199 54.2
Run Code Online (Sandbox Code Playgroud)
在设计中捕获单元的推荐方法是什么?例如,我可以:
我碰巧使用 MySQL,但我认为这是一个通用的数据库规范化问题。
mysql database database-design normalization database-normalization