每一个体面的PHP程序员有一个print_r或var_dump包装他们使用,爱情和指定快捷键,我们为什么不分享我们最喜欢的人.
背景:假设我有以下显然不正确的PHP:
try{
$vtest = '';
print(array_pop($vtest));
}catch(Exception $exx){}
Run Code Online (Sandbox Code Playgroud)
为了使用array_pop,$ vtest显然应该是一个数组,而不是一个字符串.然而,当我运行此代码时,会显示警告.我不希望这样,我只是希望代码无声地失败.
问题:与其他语言相比,PHP try-catch是否有一些特殊之处导致这种情况无效?
免责声明: 仅供参考,确实有其他方法可以在PHP中处理这种情况,但这些都是不可取的.这里的目标是避免:
"签名"技巧:
$vtest = '';
print(@array_pop($vtest)); // <-- would like to avoid this
Run Code Online (Sandbox Code Playgroud)
类型铸造:
$vtest = '';
$vtest = (array)$vtest;
print(array_pop($vtest));
Run Code Online (Sandbox Code Playgroud) 我正在Linux环境下的一个网站上工作(Debian).我不是Linux的专家,但我可以处理它,网站是使用PHP,MySQL,HTML等制作的.
问题是,我在服务器端使用PHP.现在,为了测试,我在我的PC上安装了Apache,所以我可以测试一切.但是,如果我可以调试PHP代码那将是很好的.到目前为止,我并不需要它,但现在代码越来越大,这是必须的.
到目前为止,我正在使用vim,一切都很好,但是,我怎么能在我的情况下调试PHP?我应该安装什么工具?他们有空吗?
基本上,我需要知道在我的情况下什么是最好的选择.
我是PHP的新手.这是我的情况.我在vim中编写代码并将其放在/ var/www /下我可以使用
localhost/* .php
在浏览器上运行我的代码.
当我的代码有bug时.它什么都没出来.
如何调试像c ++或java这样的mu代码?
谢谢.
编辑:
一些朋友提供的链接对我没有帮助.我在Linux下.这是胜利.
我正在尝试使用以下命令从 PHP 脚本调用节点脚本exec:
$output = exec("/usr/bin/node /home/user/nodescript.js");
Run Code Online (Sandbox Code Playgroud)
nodescript.js 是:
var Scraper = require('google-images-scraper');
var keywords = process.argv[2];
var scraper = new Scraper({
keyword: keywords,
rlimit: 10, // 10 p second
});
console.log("foo");
scraper.list(10).then(function (res) {
console.log("bar");
console.log(res);
});
setTimeout(function () {
process.exit(1);
}, 20000)
Run Code Online (Sandbox Code Playgroud)
但我收到的是字符串“foo”,而不是“bar”。如果我从命令行运行节点脚本,我会得到“foo”和“bar”。不知何故,我在函数内没有收到任何控制台输出。我究竟做错了什么?