But wouldn't that require rewriting the code that calls CategoryPage to make it call the new class? If you're changing the core code like that, you may as well just add the code directly to CategoryPage.php and not worry about hooks.
There is a hook.
$wgHooks['CategoryPageView'][] = 'wfMyAlternativeCategoryPage';
Good point, that hook would work.
Yup. And it does. But it has to load the parent classes first. Which it should do via autoloading in php 5.x. I'm getting inheritance. I'm not getting autoloading. I have no idea why, since I assume that the autoloader should have run earlier. But looking at it, I can put the require in the extension, so I can take care of the upgrade problem at least.
That's very odd... I know next to nothing about autoloading, so I can't help you.