2010-08-17 6 views
1
class Theme 
{ 
    function __construct() 
    { 

    } 

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

sur index.phpphp débutant classe

<?php 

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

sur mon site/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'); 
?> 

en quelque sorte il a besoin pour thème $ = nouveau thème; à nouveau sur site/index.php

est-il une autre façon de le faire fonctionner? Peut-être que ma conception de classe n'est pas bonne ou que l'algorithme est défaillant.

modifier * plus d'informations ok donc ce que j'essaie de faire est de charger l'en-tête voir le pied de page.

+0

Je ne comprends pas votre question ou ce qui ne fonctionne pas? –

Répondre

0
class Theme 
{ 
    function __construct() 
    { 

    } 

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

sur index.php

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

sur mon site/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'); 
?> 

ce fait l'affaire pour le moment, merci les gars.

1

L'objet « thème $ » ne persiste pas tout au long de plusieurs fichiers, donc quand « site/index.php » est demandée, votre objet de « index.php » est parti ...

Qu'ou J'ai eu votre question complètement faux :)

2

Nous ne connaissons pas la relation entre vos deux fichiers .php il serait donc difficile de répondre.

Si vous définissez le thème $ comme nouveau thème, les règles de portée s'appliquent toujours: votre définition/instanciation n'est valide que sur sa portée. Vous n'aurez pas d'objet de thème global. Indépendamment de tout design de classe/objet.

0

Essayez de rendre public la fonction de charge:

class Theme 
{ 
    function __construct() 
    { 

    } 

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

Les membres de la classe PHP (champs et méthodes) sont publics par défaut. –