0

嗨,我正在尝试制作自己的简单模板系统,而​​我只是在学习类,所以我试图用类和对象来做。

如果我把它放在每个文档的顶部,它就会起作用:

$template = new Includes('name', 'path');
$include = new Includes('name', 'path'); 

但感觉它不应该是必要的,而且它不是那么漂亮。

这就是我的代码现在的排列方式

索引.php:

<?php
require_once 'class_include.php';
$template->loadTemplate('body');

正文.php:

 <?php require_once 'class_include.php'; ?>
    <head>

    <?php $template->loadTemplate('head'); ?>

</head>
<body>

<?php
    $template->loadTemplate('sidepanel');
    $template->loadTemplate('content');
?>
</body>

class_include.php:

class Includes {

public function loadTemplate($name, $path = 'template'){
    require_once "$path/$name.php";
}
public function loadInc($name, $path = 'inc'){
    require_once '$path/$name' . '.php';
}
}
$template = new Includes('name', 'path');
$include = new Includes('name', 'path');  

错误信息:

( ! ) 致命错误:在 C:\wamp\www\project\template\body.php 中的非对象上调用成员函数 loadTemplate()

( ! ) 注意:未定义变量:C:\wamp\www\project\template\body.php 中的模板

感谢您的任何帮助,您可以提供!

4

1 回答 1

0

认为在您的代码中,您应该使用静态方法而不是对象。
索引.php

<?php
require_once 'class_include.php';
Includes::loadTemplate('body');

正文.php

<head>
    <?php Includes::loadTemplate('head'); ?>
</head>
<body>
    <?php
        Includes::loadTemplate('sidepanel');
        Includes::loadTemplate('content');
    ?>
</body>

class_includes.php

class Includes {

    public static function loadTemplate($name, $path = 'template'){
        require_once "$path/$name.php";
    }

    public static function loadInc($name, $path = 'inc'){
        require_once '$path/$name' . '.php';
    }
}
于 2013-04-07T15:49:18.893 回答