[PHP][OPT] Kłopoty jądrowe

0

Hello,
piszę sobie takie jąderko stronki.
moduły wywołuję w ten sposób:
index.php?module=articles <- taki adres szuka pliku articles.php w katalogu modules i jak jest to go includuje na stronke.
Opt sobie zainstalowałem, w index.php to działa, a w modułach nie.
Czemu?
Dostaje error:
"[b]Fatal error[/b]: Call to a member function assign() on a non-object in [b]/home/xavipl/domains/xavi.pl/public_html/xaff/articles.php[/b] on line [b]2"
[/b]Na ircu powiedziano mi, że to znaczy, że $tpl nie jest obiektem, a czemu?
Kod wygląda tak:

<?php
/*
Jądro Xaff, stworzone przez Xaviego i Riffa.
index.php?module=articles, includuje articles.php z katalogu modules ;-)
*/
//Pobranie zestawu funkcji z includes/function.php.xavi.riff
require_once("includes/function.php.xavi.riff");

 // ustaw sciezke do biblioteki
  define('OPT_DIR', 'opt/');

 
	// przetwarzanie szablonu
   
  
  // zaladuj biblioteke
  require(OPT_DIR.'opt.class.php');
  try{ 
	// utworz obiekt parsera
	$tpl = new optClass;
	// skonfiguruj OPT
   
	$tpl -> root = 'templates/';
	$tpl -> compile = 'templates_c/';

	$tpl -> gzipCompression = 1;
	// wyslij naglowki
	$tpl -> httpHeaders(OPT_HTML); 
	
	
   
	
	
	
	
	
	
	

	
	



//Jeżeli ktoś wywoła index.php?module=costam
if($_GET['module']){
	//Przypisanie zmiennej $module, wartości z GET'a.
	$module = $_GET['module'];
	//Wywołanie funkcji.
include_module($module);


	
	
	//Jeżeli nie.
}else{
	
	//W pliku index.tpl, jak wpiszesz {$Komunikat} to pokaże się napis: Hah!. 
	//Możesz używać też funkcji php. np. 
	// $tpl -> assign('Data', date(H:i)); 
	 $tpl -> assign('Komunikat', "Hah!"); 
	   $tpl -> parse('index.tpl'); 
}

 //Ustawienie nazwy pliku który będzie odpowiadał za wyświetlenie danych.
  

//Tym się nie przejmuj.
 }catch(optException $exception){ 
	optErrorHandler($exception); 
  } 
 


















?>

Funcion to proste:

<?php


function include_module($name){
	//Oskubanie argumentu ze zbędnych tagów. <niewymagane> 
	$name_sciezka = strip_tags($name);
	//Wstawienie na końcu rozszerzenia .php<wymagane do poprawnego działania>
	$name_sciezka .= ".php";
	//Sprawdzenie czy moduł istnieje.
	$name_y = file_exists("modules/".$name_sciezka);
	//Jeżeli nie istnieje
	if(!$name_y){
		
	echo 'Nie ma takiej scieżki!';
		
		
	}else{
		//Jeżeli istneieje.
		define('SCRIPT_PATH', modules);
		require_once(SCRIPT_PATH."/".$name_sciezka);
		
	
		
	}
	
	
	
	
}



?>

Domyślam, się, że chodzi o ścieżki do biblioteki opt, ale jak to naprawić aby działało?
Pozdrawiam

Błąd powstaje gdy używam assign w modułach:(</php>

0

Używasz go w funkcjach? global $tpl może?

A patrząc na kod, to ma się nijak do błędu. Gdzie jest plik articles.php ?

0
<?php
$tpl -> assign('Komunikat', 'To jest moduł articles.php');

?>

Nie, nie używam w funkcjach.

0

Hm, teraz przeanalizowałem dogłębniej. Wszystko w includowanym pliku może sięgać tylko tam, gdzie kod w funkcji. Więc w pliku/funkcji musisz dodać global $tpl.

1 użytkowników online, w tym zalogowanych: 0, gości: 1