php新手类

时间:2010-08-17 12:24:58

标签: php design-patterns

class Theme
{
    function __construct()
    {

    }

    function load( $folder, $file )
    {
        $theme_path = ROOTPATH . '/theme/' . $folder . '/' . $file . '.php';
        require_once($theme_path);
        return TRUE;
    }
}

on index.php

<?php

require class.theme.php
$theme = new Theme;
$theme->load('site','index');
?>

在我的网站/ index.php

<?php 
// to work i need another $theme = new theme; why can i do this ? can i make 
it make it work twice or more inside the function load ?   
$theme->load('site','header');
$theme->load('site','footer');
?>

不知怎的,它需要$ theme = new Theme;再次在网站/ index.php

还有另一种方法可以让它发挥作用吗?也许我的班级设计不好或算法失败。

编辑*更多信息 好吧,我试图做的是加载标题视图页脚视图。

4 个答案:

答案 0 :(得分:2)

我们不知道您的两个.php文件之间的关系,因此很难回答。

如果将$ theme定义为新主题,则仍然适用范围规则:您的定义/实例仅在其范围内有效。您将没有全局主题对象。独立于任何类/对象设计。

答案 1 :(得分:1)

对象“$ theme”不会在多个文件中持续存在,因此当请求“site / index.php”时,“index.php”中的对象消失了......

或者我的问题完全错了:)

答案 2 :(得分:0)

尝试公开加载功能:

class Theme
{
    function __construct()
    {

    }

    public static function load( $folder, $file )
    {
        $theme_path = ROOTPATH . '/theme/' . $folder . '/' . $file . '.php';
        require_once($theme_path);
        return TRUE;
    }
}

答案 3 :(得分:0)

class Theme
{
    function __construct()
    {

    }

    function load( $folder, $file )
    {
        $theme_path = ROOTPATH . '/theme/' . $folder . '/' . $file . '.php';
        return $theme_path;
    }
}

on index.php

<?php
require class.theme.php
$theme = new Theme;
require_once $theme->load('site','index');
?>

在我的网站/ index.php

<?php 
// to work i need another $theme = new theme; why can i do this ? can i make 
it make it work twice or more inside the function load ?   
require_once $theme->load('site','header');
require_once $theme->load('site','footer');
?>

这一直是诀窍,谢谢你们。