duanji1043 2010-01-28 04:48
浏览 86
已采纳

如何在PHP类中停止进一步的方法?

I am learning OOP with PHP. I am creating a class to extract XML data from a website. My question is how do I stop the given object from executing more methods if there is an error with the first method. For example, I want to send the URL:

class GEOCACHE {
   public $url;

   public function __construct($url)
   {
      $this->url=$url;
      if (empty($this->url))
      {
         echo "Missing URL";    
      }
   }
   public function secondJob() 
   { 
      whatever
   }
}

when I write like this:

    $map = new GEOCACHE ("");
    $map->secondJob("name");

How do I prevent the secondJob method from being executed in that given object without the script terminating?

  • 写回答

4条回答 默认 最新

  • douxing6434 2010-01-28 04:52
    关注

    Throw an Exception in the constructor, therefore the object will never be created

    public function __construct($url)
    {
       $this->url=$url;
       if (empty($this->url))
       {
          throw new Exception("URL is Empty");    
       }
    }
    

    You can then do something like this:

    try
    {
        $map = new GEOCACHE ("");
        $map->secondJob("name");
    }
    catch ( Exception $e)
    {
        die($e->getMessage());
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类
  • ¥15 微带串馈天线阵列每个阵元宽度计算
  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据