我正在学习使用PHP的OOP。我正在创建一个从网站中提取XML数据的类。我的问题是如果第一种方法出错,如何阻止给定对象执行更多方法。例如,我想发送URL:
class GEOCACHE {
public $url;
public function __construct($url)
{
$this->url=$url;
if (empty($this->url))
{
echo "Missing URL";
}
}
public function secondJob()
{
whatever
}
}
当我写这样的时候:
$map = new GEOCACHE ("");
$map->secondJob("name");
如果没有脚本终止,如何防止在给定对象中执行secondJob方法?
答案 0 :(得分:2)
在构造函数中抛出异常,因此永远不会创建对象
public function __construct($url)
{
$this->url=$url;
if (empty($this->url))
{
throw new Exception("URL is Empty");
}
}
然后你可以这样做:
try
{
$map = new GEOCACHE ("");
$map->secondJob("name");
}
catch ( Exception $e)
{
die($e->getMessage());
}
答案 1 :(得分:1)
考虑使用exceptions来控制脚本的流程。在构造函数中抛出异常,并将其捕获到外部。
答案 2 :(得分:1)
class GEOCACHE {
public $url;
public function __construct($url)
{
$this->url=$url;
if (empty($this->url))
{
throw new Exception("Missing URL");
}
}
public function secondJob()
{
whatever
}
}
try{
$map = new GEOCACHE ("");
$map->secondJob("name");
}catch($e){
// handle error.
}
答案 3 :(得分:0)
从__construct
中抛出异常public function __construct($url)
{
if(null == $url || $url == '')
{
throw new Exception('Your Message');
{
}
然后在你的代码中
try
{
$geocache = new Geocache($url);
$geocache->secondJob();
// other stuff
}
catch (exception $e)
{
// logic to perform if the geocode object fails
}