通过命令行传递参数php
问题描述:
所以我有这个脚本,我试图通过命令行传递参数。 但是,不能得到它的工作。下面是脚本代码:通过命令行传递参数php
#!/usr/bin/php
<?php
$argv[1] = $scraper;
require_once('Scraper.php');
$scraper = new JonH_Scraper();
if (empty($argv[1])) {
echo 'whats the URL?';
}
$scraper->scrape($url);
var_dump($scraper);
答
的错误是在这里
$argv[1] = $scraper;
应该
$scraper = $argv[1];
问候
答
我相信问题是这一行:
$argv[1] = $scraper;
您将$scraper
指定为$argv[1]
,但$scraper
未定义,因此赋值为空。稍后,检查$argv[1]
是否为空,它将自NULL
以后。
也许应该颠倒?
$scraper = (isset($argv[1])) ? $argv[1] : null;
if (empty($scraper)) die('No url provided');
编辑:你可能想既然你继续使用不同的变量名,并创建一个新的Scraper
对象并将其分配给同一个变量。
答
应该是这样的:
php script.php <URL>
#!/usr/bin/php
<?php
require_once('Scraper.php');
$url = $argv[1];
if(empty($url)){
die('URL is EMPTY');
}
$scraper = new Scraper();
$results = $scraper->scrape($url);
var_dump($results);
什么你被它的意思是不工作?是否有错误,或只是打印出“Whats the URL”? – andrewsi 2012-08-13 19:43:43
在命令行参数不存在的情况下,您应该“退出”或“死亡”。使用你在这里输入的代码,即使参数为空,也会调用'$ scraper-> scrape()'。 – 2012-08-13 19:44:45
你会得到什么错误,并检查你的包含路径。添加'var_dump($ argv);'并在您的hashbang上设置'-n'标志,或者...有太多可能导致有趣事情发生的事情...需要更多信息 – 2012-08-13 19:45:23