<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DZone Snippets: method code</title>
    <link>http://snippets.dzone.com/posts</link>
    <pubDate>Sun, 07 Sep 2008 21:55:52 GMT</pubDate>
    <description>DZone Snippets: method code</description>
    <item>
      <title>Constructor overloading Java and PHP5</title>
      <link>http://snippets.dzone.com/posts/show/3237</link>
      <description>Java's constructor overload&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;class Hoge {&lt;br /&gt;&lt;br /&gt;    public Hoge(){&lt;br /&gt;        System.out.println("constructor 0");&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public Hoge(int a){&lt;br /&gt;        System.out.println("constructor 1:" + a);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public Hoge(int a, String[] hoge){&lt;br /&gt;        System.out.println("constructor 2:" + a + ":" + hoge);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public Hoge(A a, B b, C c){&lt;br /&gt;        System.out.println("constructor 3:" + a + ":" + b + ":" + c);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;PHP5 code&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;class Hoge {&lt;br /&gt;&lt;br /&gt;    public function __construct(){&lt;br /&gt;        $num = func_num_args();&lt;br /&gt;        $args = func_get_args();&lt;br /&gt;        switch($num){&lt;br /&gt;        case 0:&lt;br /&gt;            $this-&gt;__call('__construct0', null);&lt;br /&gt;            break;&lt;br /&gt;        case 1:&lt;br /&gt;            $this-&gt;__call('__construct1', $args);&lt;br /&gt;            break;&lt;br /&gt;        case 2:&lt;br /&gt;            $this-&gt;__call('__construct2', $args);&lt;br /&gt;            break;&lt;br /&gt;        case 3:&lt;br /&gt;            $this-&gt;__call('__construct3', $args);&lt;br /&gt;            break;&lt;br /&gt;        default:&lt;br /&gt;            throw new Exception();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public function __construct0(){&lt;br /&gt;        echo "constructor 0" . PHP_EOL;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public function __construct1($a){&lt;br /&gt;        echo "constructor 1: " . $a . PHP_EOL;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public function __construct2($a, array $hoge){&lt;br /&gt;        echo "constructor 2: " . $a . PHP_EOL;&lt;br /&gt;        var_dump($hoge);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public function __construct3(A $a, A $b, C $c){&lt;br /&gt;        echo "constructor 3: " . PHP_EOL;&lt;br /&gt;        var_dump($a, $b, $c);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    private function __call($name, $arg){&lt;br /&gt;        return call_user_func_array(array($this, $name), $arg);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;example(PHP5)&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;interface C {&lt;br /&gt;    const C = __CLASS__;&lt;br /&gt;}&lt;br /&gt;class A {&lt;br /&gt;    const A = __CLASS__;&lt;br /&gt;    private $a = array(1, 2, 3);&lt;br /&gt;}&lt;br /&gt;class B extends A{&lt;br /&gt;    const B = __CLASS__;&lt;br /&gt;    private $b = array(1, 2, 3);&lt;br /&gt;}&lt;br /&gt;class D extends B implements C {&lt;br /&gt;    const D = __CLASS__;&lt;br /&gt;    private $c = array(1, 2, 3);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;$a = new Hoge();&lt;br /&gt;$b = new Hoge(1);&lt;br /&gt;$c = new Hoge(777, array(1,2,3));&lt;br /&gt;$d = new Hoge(new A(), new B(), new D());&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Thu, 04 Jan 2007 15:39:12 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/3237</guid>
      <author>nowel (hata)</author>
    </item>
  </channel>
</rss>
