如何在PHP项目中找到任何未使用的函数?
是否有功能或API内置到PHP,让我分析我的代码库-例如反射,token_get_all()?
这些API功能是否足够丰富,我不必依赖第三方工具来执行此类分析?
我正在使用包含许多项目的SVN存储库.我需要将一些项目从该存储库移到单独的存储库中,每个项目一个,保留历史记录.
我已经能够使用svnadmin dump将整个存储库转储svnadmin load到另一个存储库中,但是我找不到从原始存储库中只转储一个项目的方法,因此我可以将其加载到新的存储库中.这可能吗?如果是这样的话?
我正在开展一个项目,在那里我生产铝挤压切割清单.
铝挤压件的长度为5米.
我有一个较小长度的列表需要从5米长的铝挤压切割.
需要按照从5米长的铝挤压产生最少量的切割废料的顺序切割较小的长度.
目前,我以这样的方式订购切割清单,即通常最小的长度首先被切割,最小的长度最后切割.这个规则的例外是,如果较短的长度不适合5米长的铝挤压件的剩余长度,我使用最长的较短的长度.
这似乎产生了非常有效(非常少的切割废料)切割清单,并且不需要很长时间来计算.我想象,但是,即使在切割清单非常有效,但不一定是最有效的.
有谁知道一种计算最有效切割清单的方法,可以在合理的时间内计算出来?
编辑:谢谢你的答案,我将继续使用"贪婪"的方法,因为它似乎做得非常好(完成任何人类尝试创建一个有效的切割清单),并且非常快.
我最近开始使用Zend Studio,它报告了以下类型的代码:
$q = query("select * from some_table where some_condition");
while ($f = fetch($q)) {
// some inner workings
}
Run Code Online (Sandbox Code Playgroud)
要停止警告,代码需要像这样写:
$q = query("select * from some_table where some_condition");
$f = fetch($q);
while ($f) {
// some inner workings
$f = fetch($q);
}
Run Code Online (Sandbox Code Playgroud)
为什么这被标记为警告?这么糟糕吗?
我知道警告可能旨在阻止这样的错误:
$a = 1;
while ($a = 1) {
// some inner workings
$a++;
}
Run Code Online (Sandbox Code Playgroud)
永远不会终止,因为1被分配给$ a,而$ a又返回1到while语句,而不是针对$ a进行测试,并且当$ a不是1时,将false返回到while语句.
容易出错的错误可以验证警告,但是在第二个例子中忘记在while块的末尾添加额外的$ f = fetch($ q),这也会导致永远不会终止的循环.如果我更改我的代码以删除警告,然后忘记在while块的末尾添加$ f = fetch($ q),Zend将不会发出警告!
因此,通过删除有关常见错误的警告,我正在为自己设置一个不同的常见错误.
走出锅,进入火中.
warnings zend-framework variable-assignment while-loop conditional-statements
在一个涉及的项目中,我需要使用特定宽度的列来呈现表,每个表行只有一行HTML行(没有换行).我需要每个表格单元格在顶部和底部填充1个像素,在左侧和右侧填充2个像素.我能想出的跨浏览器的最佳方法是以这种方式将div放在表内的td中:
<style>
table.grid { border: none; border-collapse: collapse; }
table.grid tbody tr td { padding: 1px 2px; }
table.grid tbody tr td div { overflow: hidden; white-space: nowrap; }
table.grid tbody tr td.one { width: 100px; }
table.grid tbody tr td.two { width: 200px; }
</style>
<table class="grid">
<tbody>
<tr>
<td class="one"><div>One</div></td>
<td class="two"><div>Two</div></td>
</tr>
<tr>
<td class="one"><div>Another One</div></td>
<td class="two"><div>Another Two</div></td>
</tr>
</tbody>
</table>
Run Code Online (Sandbox Code Playgroud)
我希望能够消除添加额外div的需要.我花了很多时间在谷歌搜索这个问题,但找不到替代方案.
有没有办法做我需要的东西而不需要添加额外的div?如果那么,它是什么?
有没有办法在不使用表的情况下获得所需的结果?
如何创建一个填充整个桌面的主窗口,而不覆盖(或被任务栏覆盖)任务栏并且没有最大化?我可以找到整个屏幕尺寸并相应地设置主窗口:
window = gtk.Window()
screen = window.get_screen()
window.resize(screen.get_width(), screen.get_height())
Run Code Online (Sandbox Code Playgroud)
但窗口的底部由任务栏覆盖.
我正在一个网站上做一些工作,该网站有一个安全区域,只有在用户登录后才能使用.在这个区域有一个页面,其中包含可以下载的pdf文档的链接.物理文档位于Web站点的根目录之外.pdf文档的链接如下所示:
的index.php?页=安全区域/下载&文件= protected.pdf
它执行以下(注:我知道这是强制进行下载,而不是打开该文件的方式中的浏览器):
// check security, get filename from request, prefix document download directory and check for file existance then...
header('Content-Type: application/pdf');
header('Content-Disposition: attachment; filename="' . basename($file) . '"');
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize($file));
header('Connection: Close');
set_time_limit(0);
readfile($file);
Run Code Online (Sandbox Code Playgroud)
这很好用,但在Firefox 3和Internet Explorer 7(我没有使用任何其他浏览器进行测试)不会在浏览器中打开此文件,它们都显示下载对话框(如预期的那样).如果我选择"打开"而不是"保存",则会下载文档并在浏览器外部启动Adobe Reader以呈现文档.
我遇到的问题是在浏览器中下载文件并保存正确的默认文件名.
我想在浏览器中打开该文档.一种方法是使用标题"Content-Disposition:inline;" 但这意味着我无法指定文件名(因为浏览器似乎忽略了).这样做的问题是当我保存文档时,默认名称是URL的名称,而不是pdf文档的文件名:
http___example.com_index.php_page=secure_area_download&file=protected.pdf
Run Code Online (Sandbox Code Playgroud)
如何让Firefox和Internet Explorer在浏览器中打开文档并提供正确的默认文件名来保存?