<?php

class Base
{
    public function getColumns()
    {
        return 'id';
    }

    public function load()
    {
        return $this->getColumns();
    }
}

class Article extends Base
{
    public function getColumns()
    {
        return 'id, article';
    }
}
class Category extends Base
{
    public function getColumns()
    {
        return 'id, category';
    }
}

function module($class, $module) {
    if (!class_exists($module)) {
        class_alias($class, $module);
    }
    return new $module;
}

echo PHP_EOL, 'Article & Category extends DummyA', PHP_EOL, PHP_EOL;
echo 'Select ',module('Article',  'DummyA')->load(),' from Article', PHP_EOL;
echo 'Select ',module('Category', 'DummyA')->load(),' from Category', PHP_EOL;

echo PHP_EOL, 'Category & Article extends DummyB', PHP_EOL, PHP_EOL;
echo 'Select ',module('Category', 'DummyB')->load(),' from Category', PHP_EOL;
echo 'Select ',module('Article',  'DummyB')->load(),' from Article', PHP_EOL;

echo PHP_EOL, 'Article extends Dummy1, Category extends Dummy2', PHP_EOL, PHP_EOL;
echo 'Select ',module('Article',  'Dummy1')->load(),' from Article', PHP_EOL;
echo 'Select ',module('Category', 'Dummy2')->load(),' from Category', PHP_EOL;
