我正在使用抽象Page
类在 PHP 中创建模板系统。我网站上的每个页面都是它自己的类,扩展了Page
该类。由于无法实例化抽象类,$page = new Page();
因此我无法弄清楚如何在不知道该页面的类名的情况下实例化扩展页面的类。
如果我在运行时只知道抽象类的名称,是否可以实例化一个扩展抽象类的类?如果是这样,我将如何去做?
Page类的伪代码:
<?php
abstract class Page{
private $request = null;
private $usr;
function __construct($request){
echo 'in the abstract';
$this->request = $request;
$this->usr = $GLOBALS['USER'];
}
//Return string containing the page's title.
abstract function getTitle();
//Page specific content for the <head> section.
abstract function customHead();
//Return nothing; print out the page.
abstract function getContent();
}?>
加载所有内容的索引页面将具有如下代码:
require_once('awebpage.php');
$page = new Page($request);
/* Call getTitle, customHead, getContent, etc */
各个页面如下所示:
class SomeArbitraryPage extends Page{
function __construct($request){
echo 'in the page';
}
function getTitle(){
echo 'A page title!';
}
function customHead(){
?>
<!-- include styles and scripts -->
<?php
}
function getContent(){
echo '<h1>Hello world!</h1>';
}
}