使用PHPUnit 3.6我试图exec()在下面的控制器类中测试该方法.这个方法做了两件事:
(简化)源代码如下所示:
abstract class CLIController extends Controller
{
/* irrelevant class details here */
public function exec()
{
$action = ! empty($this->opts->args[0])
? $this->opts->args[0]
: $this->default_action;
if ( ! $action || ! is_callable(array($this, $action))) {
$msg = 'Invalid controller action specified';
throw new LogicException($msg);
} else {
$this->$action(); // <---- trying to get code coverage on this line!
}
}
}
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚如何覆盖这部分代码:
} else {
$this->$action();
}
Run Code Online (Sandbox Code Playgroud)
因为我不确定如何(或甚至可能)测试一个方法的调用,该方法的名称在抽象类的上下文中是未知的.再次:要调用的方法在子类中声明.通常我会模拟一个抽象方法,但在这种情况下我不能,因为该方法尚不存在 - 它将由子类指定. …
假设我想测试一个简单的帮助器,它将类名作为参数并进行重定向.
如果在几个控制器内部的许多地方调用该函数,我该如何测试?我应该测试在整个代码中作为参数传递的每个类名(自己在提供者函数中写入)吗?或者是否有一个神奇的功能为我做到这一点?
假设我正在处理一个大数据(有多大并不重要)数据数组并将其传递给函数.当然,它将通过值传递,而不是默认情况下通过引用传递.好的,我知道.
所以我的问题是:
如果存储在此数组中的数据足够大,则可以通过将数据存储在对象(例如,stdClass)中或通过使用foo(&$ myData)来获得有价值的性能或内存使用增益,以便通过引用传递数据而不是价值?
我的理解是,当它通过值传递时,PHP将创建一个全新的指针,指向数据的全新内存分配,而传递的值变量存在于函数范围中.在这种情况下,由于这个原因,可能通过引用传递大量数据是值得的吗?我不知道这种理解是否正确......这是问题的一部分.
注意:这是一个假设,所以不要提出任何关于"过早优化","你最好在最小化磁盘I/O然后再担心这个","取决于你有多少RAM","等等."
UPDATE
还有一个问题:假设数据被传递给一个对象构造函数,以便存储为该对象的一个属性,并且它会以一些小的方式被修改,因为它存储在新对象的属性中.那么操作的内存使用方面是否会有显着差异?假设最好以目标格式定义数据以避免因改变数据线而产生的成本,这是正确的吗?
考虑一个服务于三个虚拟主机的Web服务器:
现在假设服务器收到以下原始请求消息(代码格式化删除了终止\r\n序列):
GET / HTTP/1.1
Host: nothostedhere.com
Run Code Online (Sandbox Code Playgroud)
关于如何响应当前服务器上不存在的主机名请求,我没有在RFC 2616中看到任何指导(也许我错过了?).例如,Apache只会将其配置中定义的第一个虚拟主机用作"主要主机",并假装客户端请求该主机.显然,这比返回400 Bad Request响应更有效,并保证客户端总能看到一些表示.
所以我的问题是......
400如果客户端在使用HTTP/1.1协议时请求不存在的主机,那么除了"健壮性与正确性"参数之外,任何人都可以提供理由来阻止我对(或其他错误代码)做出响应吗?
请注意,所有HTTP/1.1请求必须Host:根据RFC 2616 指定标头.对于HTTP/1.0请求,唯一真正的选项是提供"主"主机结果.此问题专门针对HTTP/1.1协议请求.
在我打开文件include()ed后gf,如何将该文件中的文本复制到原始文件的搜索功能中?
例如,如果我正在处理PHP文件并且它有一行:
include("someFile.php");
Run Code Online (Sandbox Code Playgroud)
我会把光标放在上面someFile.php并按下gf.在那个文件中,我看到了文字function reallyLongFunctionName() {}.我想在原始文件中搜索该函数.我可以复制函数名称v然后再Ctrl-O回到原始文件,但现在我该如何执行搜索?
谢谢!
我有以下代码:
$id = $_GET['id'];
echo '<br>' . 'id: ' . $id . '<br><br>';
echo '<pre>';
print_r($itemQtys);
echo '</pre>';
echo '<br>' . 'itemqtys[id]: ' . $itemQtys[$id] . '<br>';
echo '<br>' . 'id: ' . $id . '<br>';
Run Code Online (Sandbox Code Playgroud)
输出是:
id:5
数组
(
[5] => 12
)itemqtys [ID]:
id:5
如您所见,当我尝试使用$ id变量作为键访问数组中的值时,不返回任何值.但是,当我这样做时:
echo '<br>' . 'itemqtys[5]: ' . $itemQtys[5] . '<br>';
Run Code Online (Sandbox Code Playgroud)
结果是:
itemqtys [5]:12
为什么我不能使用变量来指定数组中的索引?
我正在做一个小项目,我需要在我的数据库中显示作者的每个作者的图像.窥视下面的代码:
- QUERY--
$getboth_sql = mysql_query(
"SELECT lyrics.lyrics_id, lyrics.lyrics_title, lyrics.lyrics_text,artists.artist_nane,artists.artist_id
FROM lyrics,artists
WHERE lyrics.artist_id = artists.artist_id
ORDER BY lyrics.lyrics_title");
while ($both = mysql_fetch_assoc($getboth_sql)) {
$lyrics_id = $both[lyrics_id];
$lyrics_title = $both[lyrics_title];
$lyrics_text = $both[lyrics_text];
$artist_name = $both[artist_nane];
$artist_id = $both[artist_id];
?>
<div class="artimg"><img src="images/artists/<?php echo $artist_name;?>.jpg" height="50px" width="50px"/></div>
<?php
}//END While
Run Code Online (Sandbox Code Playgroud)
上面的代码可以正常工作但是如果我没有在'artists'目录中保存图像,那么该图像就不会出现图像.
<div class="artimg"><img src="images/artists/<?php echo $artist_name;?>.jpg" height="50px" width="50px"/></div>
Run Code Online (Sandbox Code Playgroud)
问题:如果找不到指定的打开,显示默认图像的最佳方法是什么.
我一直在玩空文件和存在的函数,但我没有把它弄好.请帮忙.
PS如果这个问题看起来很愚蠢,我不是专业人士!
如果我的脚本抛出异常,我应该返回什么HTTP状态?
200好的
要么
500内部服务器错误
假设用户请求参数是正确的,但我的脚本中存在一个错误,导致出现错误消息而不是正确的响应(XML,JSON或其他格式).什么应该是HTTP状态?
我有一个联系表单,它在我的服务器上托管时工作正常,但是当我将它上传到我的客户端服务器时,我遇到了问题.请查看此处的页面:http://www.conceptonegfx.com/contact.php
我在表单顶部收到以下错误
注意:使用未定义的常量'PHP_SELF' - 在第42行的E:\ Domains\c\conceptonegfx.com\user\htdocs\fns.php中假定为''PHP_SELF''
注意:未定义的索引:第42行的E:\ Domains\c\conceptonegfx.com\user\htdocs\fns.php中的'PHP_SELF'"id ="uploadform"enctype ="multipart/form-data">
以下是fns.php上的问题:
<?php
//start session
if(!isset($_SESSION))
{
session_start();
}
// prints form
function print_form(){
?>
<form method="post" class="action="<?php echo $_SERVER[’PHP_SELF’];?>" id="uploadform" enctype="multipart/form-data">
<p><label for="namefrom">Name <span class="required">*</span></label>
<input name="namefrom" id="namefrom" type="text" class="field" value="<?= $_SESSION['myForm']['namefrom']; ?>" tabindex="1"/></p>
<p><label for="emailfrom">Email <span class="required">*</span></label>
<input name="emailfrom" id="emailfrom" type="text" class="field" value="<?= $_SESSION['myForm']['emailfrom']; ?>" tabindex="3"/></p>
<p><label for="phone">Phone</label>
<input name="phone" id="phone" type="text" class="field" value="<?= $_SESSION['myForm']['phone']; ?>" tabindex="4"/></p>
<p><label for="message">Message <span class="required">*</span></label>
<textarea name="comments" id="comments" rows="10" cols="35" …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用PHP中的套接字将分块的POST数据流式传输到本地服务器进行测试.如果我不对请求实体主体进行分块并提供Content-Length头,则此方法可以正常工作.
但是,当我按如下方式对传输进行分块时,服务器无法识别消息的结尾.下面的原始消息有什么问题阻止服务器正确识别消息是否完整?
POST / HTTP/1.1
HOST: localhost
CONTENT-TYPE: text/plain
USER-AGENT: testing
ACCEPT-ENCODING: gzip,deflate,identity
TRANSFER-ENCODING: chunked
36
When in the chronicle of wasted time
0
Run Code Online (Sandbox Code Playgroud)
在最后'0'之后有2x CRLF,所以最后5个字节是:0x30, 0x0D, 0x0A, 0x0D, 0x0A.
我已经尝试将此请求发送到本地Apache服务器和PHP5.4的内置测试服务器.两者都无法确定请求是否完成,并且执行会挂起,直到套接字超时.