static function getTableName() { return 'PRODS'; }

What a great idea! You can just do:

$tableName = $this->getTableName();

...from within the base class. No need for static:: or super:: keywords anymore... It may be not as elegant as having a special keyword for it... (Or if this is the intended solution with PHP)... But, for now, this approach would partially make my code a bit more elegant... Thanx!

Now, all I would still like to be able to do is:

$className::getTableName();





Jochem Maas wrote:
Richard Lynch wrote:
Maybe I'm just confused (well, I'm always confused...) but if a Class
has multiple children, how the heck would PHP know which child:: to
call?...

the use of the name 'child' is very confusing, I would prefer 'super' or 
'static' ...
regardless the concept is actually quite simple:

interface DOInfo {
        static function getTableName();
}

abstract class DataObject implements DOInfo {
        static function findRange() {
                $table = super::getTableName();
                return $foo; // $foo is a collection of whatever (e.g. Product 
objects)
        }

        static function getTableName() {
                throw new Exception('be a dear and implement '.__METHOD__.' in 
your subclass'); }

        }

class Product extends DataObject {
        static function getTableName() { return 'PRODS'; }
}

$products = Product::findRange();

excuse me if I've just committed a grave sin against the OO Codex in writing 
something
that either isn't 'correct' or is syntactically incorrect according to the 
current
state of php - hopefully the idea is clear anyway.

- Ken
--
It looked like something resembling white marble, which was
probably what it was: something resembling white marble.
                -- Douglas Adams, "The Hitchhikers Guide to the
Galaxy"



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

Reply via email to