Nazwa katalogu w ktorym znajduje sie pozadany plik php, nazwa tego pliku php, klasy w nim zawartej i metody do wywolania sa przekazywane w zmiennych. W ten sposob chce stworzyc w miare uniwersalny sposob nawigacji programu po swoim kodzie, bez koniecznosci dopisywania kolejnych odwolan gdy bede dodawac nowe moduly.
Problem polega na tym ze wywołanie metody przez przekazanie jej nazwy w zmiennej
nie działa.
<?php $tmp = $inst->$funkcja ?>
Poniżej troszke więcej kodu.
<?php //tablica module odpowiada istniejacym folderom 1=>'Deliverers', 2=>'Parametrisation', 3=>'Customers' ); //tablica act odpowiada nazwom plikow php w danym module 11=>'MainDeliverers', 21=>'MainParametrisation' ); //ogladacz strony w trakcie jej przegladania i wciskania guzikow zapisuje do sesji
identyfikator module-czyli nazwy katalogu i id act czyli nazwy pliku i taki plik zostaje zainkludowan
y do aktywnego skryptu $include_file = MAIN_FOLDER.SLASH.$this->module[$_SESSION['module']].SLASH.$this->act[$_SESSION['act']].'.php'; include($include_file); // nazwa klasy jest u mnie zawsze taka sama jak nazwa pliku php $klasa = $this->act[$_SESSION['act']]; //nazwa funkcji jest u mnie zawsze taka sama jak nazwa klasy + przedrostek $funkcja = FNC_PREFIX.$klasa.'()'; //tu jeszcze dziala - wchodzi do konstrukta $inst = new $klasa; //tu juz nie dziala i zwraca komunikat $tmp = $inst->$funkcja; return $tmp; ?>
Treść zwracanego komunikatu brzmi tak:
Notice: Undefined property: MainDeliverers::$FncMainDeliverers() in \functionality\UrlNavigator.php on line 35
gdzie MainDeliverers:: pochodzi ze zmiennej $inst, a $FncMainDeliverers() ze zmiennej $funkcja.
starałem się rozwiązać problem przez
, ale nie działa i przez
<?php ?>
, ale tez nie dziala.
<?php ?>
moja uwage zwrocila tez obecnosc znaku $ w nazwie funkcji w zwracanym przez przegladarke komunikacie.
czy ktos moze mi pomoc w rozwiazaniu tego problemu?
pozdrawiam