Good people, consider this, and tell me what's right and what's wrong:

<?php
/* mainstream PHP behaviour */
class blah {
    private $name;

    function __construct($param1, $param2) {
        $this->name = $param2."\n";
        print($this->name);
    }
}

class sonOfBlah extends blah {

    function __construct($param) { // overwriting the constructor is allowed
        $this->name = $param."\n";
        print($this->name);        // property read/write is enabled
    }
}

/* ext/mysqli behaviour */
class DB extends mysqli {

    function __construct() {
        /* Need to call parent constructor to even overwrite $host in the
constructor. If
        there is a constructor, need to call parent constructor to provide
property access
        (internal or external) */
        parent::__construct('localhost', 'root', '');
        print($this->thread_id)."\n";
    }
}

class secondDB extends mysqli {
    /* if there is no constructor, all seems well with direct inheritance
(only) */
}

new blah('blah - first param', 'blah - second param');
new sonOfBlah('sonOfBlah - first and only param');
$db = new DB();
$db2 = new secondDB('localhost', 'root', '');
print($db2->thread_id);
?>

Who's right, who's wrong, where are the weaknesses? - Discuss..

- Steph

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to