小编yer*_*rgo的帖子

在phpunit test中为filter_input_array(INPUT_POST)设置$ _POST

使用PHPUnit测试我的控制器时遇到一些问题.

到目前为止我正在编写的代码是实现$_POST或其他请求变量:

$_SERVER['REQUEST_METHOD'] = 'POST';
$_POST = array(
    'test' => true
);
Run Code Online (Sandbox Code Playgroud)

大多数测试都以这种方式完美运行,直到我遇到使用filter_input_array函数的方法:

$_SERVER['REQUEST_METHOD'] = 'POST';
$_REQUEST = $_POST = $GLOBALS['_POST'] = array(
    'test' => true
);

// ....

var_dump(filter_input_array(INPUT_POST));
Run Code Online (Sandbox Code Playgroud)

空值

我不愿意filter_input从我的代码中删除函数,但我无法让它们在测试中工作.

版本:
PHP 5.5.9-1ubuntu4.9(cli)(内置:2015年4月17日11:44:57)
Apache/2.4.7(Ubuntu)
PHPUnit 4.6.6作者:Sebastian Bergmann和贡献者.

任何帮助将不胜感激.

编辑2015.05.11

设置$_SERVERCONTENT_LENGTHCONTENT_TYPE没有解决的问题.我的PHP版本不允许我php://stdin按照PHP 5.6.0 chagelog中描述的方式编写(或者我理解它),但是file_put_contents(STDIN,..)成功但无论如何都不起作用.

因为它是一个phpunit测试,也许有一些phpunit.xml我还不知道的注释或条目,可以用php-cgi POST设置方式解决这个问题.

php phpunit unit-testing global http-post

12
推荐指数
2
解决办法
5074
查看次数

使用空格而不是制表符进行缩进的客观原因是什么?

根据PSR-2标准,是否有客观原因使用空格而不是制表符来缩进文件,有人可以提供:

  • 事实,
  • 引用
  • 专业知识

PSR-2标准的基础?

PSR-2标准的作者想到的不仅仅是"外观和感觉",不仅仅是基于观点的东西,很多人都难以理解为什么在团队合作中空间更好.

接受答案的解释:

根据Farsides的回答:存储库事物可能是为什么空间在PSR-2中被解释为缩进工具的确切情况.PSR-2是为协助团队合作而开发的标准.行开头处的单个意外空间 - 使用制表符时 - 可能在IDE中不可见,并且可能会潜入存储库.如果有几个人在同一个文件上工作,很可能会产生不必要的冲突.使用空格而不是标签可以轻松捕捉到眼球上的这种意外空间,这可能是一个原因,为什么使用它们成为标准.

php code-formatting psr-2

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

只有选中后,Foreach才会选中第一个复选框

我正在处理以下代码,以便从表单中选择复选框.如果我检查第一个复选框,一切都很好.如果我检查另一个复选框,我在发送bulkcopy表单时会收到"未定义的索引"错误.请记住,我正在使用post方法获取复选框,并且由于表单位置和字段的复杂性,提交按钮位于复选框上方.我需要的是选择多个复选框并将某些值添加到数据库.

<?php //bulkcopy.php

  session_start();
  if($_SESSION['admin_logged_in'] != true){
    header("Location:login.html");
    exit();
  }
  include 'db.php';

  $from = mysql_real_escape_string($_GET['from']);
  $room = mysql_real_escape_string($_POST['room']);

  if(!empty($_POST['id'])) {
    foreach($_POST['id'] as $check) {
      $id = $check;

      $sel = mysql_query("select * from $from where id = '$id' limit 1 ") or die(mysql_error());

      while($row = mysql_fetch_array($sel)){
        $preview = $row['preview'];
        $text = $row['text'];
        $title = $row['title'];
        $images = $row['images'];
      }

      $ins = mysql_query("insert into $room (id, preview, text, title, images) values (' ', '$preview', '$text', '$title', '$images') ") or die(mysql_error()); …
Run Code Online (Sandbox Code Playgroud)

html php checkbox foreach

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

PHP致命错误:第0行的Unknown中找不到类'jsonserializable'

Ubuntu 16.04 PHP 7.0.4 Phalcon 2.1.x Zephir

$~: php -v
PHP Fatal error:  Class 'jsonserializable' not found in Unknown on line 0
Run Code Online (Sandbox Code Playgroud)

在php.ini中添加phalcon.so时

phalcon zephir php-7 ubuntu-16.04

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

使用 JSON 发送二进制文件内容

我为我自己的Cloud 应用程序编写了一个REST 接口。我有一个方法getFileFromRemote($path)应该返回一个包含文件内容的 JSON 对象。不幸的是,这只在我指定的文件$path是纯文本文件时才有效。当我尝试调用图像方法或PDF状态代码为 200 但响应为空时。为了返回文件内容,我使用它file_get_contents来检索内容。


注意:我知道 ownCloud 有一个 WebDAV 接口,但我只想用 REST 来解决这个问题。


编辑 这是代码服务器端(ownCloud):

public function synchroniseDown($path)
{
    $this->_syncService->download(array($path));//get latest version
    $content = file_get_contents($this->_homeFolder.urldecode($path));
    return new DataResponse(['path'=>$path, 'fileContent'=>$content]);
}
Run Code Online (Sandbox Code Playgroud)

第一行检索在 ownCloud 服务器上下载内容并完全正常工作。

php rest json file-get-contents owncloud

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