Re: Exceptions for method on non-object rather than fatal (desired feature?)

From: Date: Wed, 22 Feb 2012 03:41:52 +0000
Subject: Re: Exceptions for method on non-object rather than fatal (desired feature?)
References: 1  Groups: php.internals 
Request: Send a blank email to [email protected] to get a copy of this message
On 02/21/2012 03:18 PM, Ralf Lang wrote:
In PHP I would rather do $mother = $baby->getMother(); if ($mother) {
      $granny = $mother->getMother();
      if ($granny) {
          $granny_name  = $granny->getName();
      }
} because I have no way to catch if $mother or $granny cannot be retrieved.
There is a way:
     1	<?php
     2	class NonCallable {
     3	    public function __call($meth, $args) {
     4	        throw new Exception("$meth does not exist");
     5	    }
     6	}
     7	
     8	class Foo {
     9	    protected $bar;
    10	    public function __construct($bar=NULL) {
    11	        $this->bar = $bar;
    12	    }
    13	    public function bar() {
    14	        if($this->bar) {
    15	            return $this;
    16	        }
    17	        return new NonCallable;
    18	    }
    19	}
    20	
    21	class Bar {
    22	    public function bark() {
    23	        echo 'bark';
    24	        return $this;
    25	    }
    26	}
    27	
    28	$foo = new Foo;
    29	
    30	try {
    31	    $foo->bar()->bark();
    32	} catch(Exception $e) {
    33	    echo 'something went wrong';
    34	    return 1;
    35	}
    36	
Liebe Grüße, Flavius

Thread (2 messages)

« previous php.internals (#57927) next »