Witam Podpowiedzcie jak dostać się do instacji w klasie. Piszę plugin (jak będzie w pełni działał pojawi się git :)) do tv. Stworzyłem sobie klasę TV i w niej istancje. W menu mam link do mojego modułu "m=stblist" w którym to tworze sobie nowy obiekt klasy Tv #v+ $TV = new Tv($DB); #v- przekazuję $DB by uniknąć globalnych zmiennych. teraz jeśli w tym pliku stblist.php, w którym inicjalizuję obiekt próbuję się dostać do klasyt to jest bez problemu. Klasa na końcu wyświetla mi listę dekoderów (analogiczne z nodes). Teraz chcę wykorzystać kontroli "podłącz/odłącz" i zrobiłem w pluginie/modules/stbset.php w którym chce zrobić odpowiednie zmiany (m=stbset&id=3). Niestety w tym pliku już nie mogę dostać się do swojej instancji $TV :/ wpisanie na początku "global $TV" niczego nie zmienia i nadal nie mogę dostać się do klasy :/
podpowiedzcie, jak dostać się w pliku stbset.php do instancji klasy zainicjowanej w pliku stblist.php?
Hej,
w momencie wykonywania modułu stbset.php nie wykonuje się stblist.php. Ja robię to tak, że dla np. pluginu LMSPlugin tworzę sobie plik plugins/LMSPlugin/lib/LMSPluginCommon z klasą LMSPluginCommon i w modułach $LMSPluginCommon = new LMSPluginCommon; i w tej klasie mam funkcje, które używam w więcej niż jednym module.
albo w handlers class LMSPluginCustomerHandler extends LMSPluginCommon (..)
W dniu 2015-11-14 15:42, Marcin napisał(a):
Witam Podpowiedzcie jak dostać się do instacji w klasie. Piszę plugin (jak będzie w pełni działał pojawi się git :)) do tv. Stworzyłem sobie klasę TV i w niej istancje. W menu mam link do mojego modułu "m=stblist" w którym to tworze sobie nowy obiekt klasy Tv #v+ $TV = new Tv($DB); #v- przekazuję $DB by uniknąć globalnych zmiennych. teraz jeśli w tym pliku stblist.php, w którym inicjalizuję obiekt próbuję się dostać do klasyt to jest bez problemu. Klasa na końcu wyświetla mi listę dekoderów (analogiczne z nodes).
Teraz chcę wykorzystać kontroli "podłącz/odłącz" i zrobiłem w pluginie/modules/stbset.php w którym chce zrobić odpowiednie zmiany (m=stbset&id=3). Niestety w tym pliku już nie mogę dostać się do swojej instancji $TV :/ wpisanie na początku "global $TV" niczego nie zmienia i nadal nie mogę dostać się do klasy :/
podpowiedzcie, jak dostać się w pliku stbset.php do instancji klasy zainicjowanej w pliku stblist.php?
--
Pozdrawiam Marcin / nicraM
lms mailing list lms@lists.lms.org.pl http://lists.lms.org.pl/mailman/listinfo/lms
Dobre rozwiązanie. Dzięki wielkie 14 lis 2015 16:21 "Maciej Hiller" maciej.hiller@host24.pl napisał(a):
Hej,
w momencie wykonywania modułu stbset.php nie wykonuje się stblist.php. Ja robię to tak, że dla np. pluginu LMSPlugin tworzę sobie plik plugins/LMSPlugin/lib/LMSPluginCommon z klasą LMSPluginCommon i w modułach $LMSPluginCommon = new LMSPluginCommon; i w tej klasie mam funkcje, które używam w więcej niż jednym module.
albo w handlers class LMSPluginCustomerHandler extends LMSPluginCommon (..)
W dniu 2015-11-14 15:42, Marcin napisał(a):
Witam Podpowiedzcie jak dostać się do instacji w klasie. Piszę plugin (jak będzie w pełni działał pojawi się git :)) do tv. Stworzyłem sobie klasę TV i w niej istancje. W menu mam link do mojego modułu "m=stblist" w którym to tworze sobie nowy obiekt klasy Tv #v+ $TV = new Tv($DB); #v- przekazuję $DB by uniknąć globalnych zmiennych. teraz jeśli w tym pliku stblist.php, w którym inicjalizuję obiekt próbuję się dostać do klasyt to jest bez problemu. Klasa na końcu wyświetla mi listę dekoderów (analogiczne z nodes).
Teraz chcę wykorzystać kontroli "podłącz/odłącz" i zrobiłem w pluginie/modules/stbset.php w którym chce zrobić odpowiednie zmiany (m=stbset&id=3). Niestety w tym pliku już nie mogę dostać się do swojej instancji $TV :/ wpisanie na początku "global $TV" niczego nie zmienia i nadal nie mogę dostać się do klasy :/
podpowiedzcie, jak dostać się w pliku stbset.php do instancji klasy zainicjowanej w pliku stblist.php?
--
Pozdrawiam Marcin / nicraM
lms mailing list lms@lists.lms.org.pl http://lists.lms.org.pl/mailman/listinfo/lms
-- pozdrawiam / best regards
Host24 Maciej Hiller _______________________________________________ lms mailing list lms@lists.lms.org.pl http://lists.lms.org.pl/mailman/listinfo/lms
Odnośnie klas wpadłem na inny pomysł. Mianowicie chciałem zainicjować obiekt podczas rejestrowania pluginu.
w hadlerze dodałem: 'access_table_initialized' => array( 'class' => 'InitHandler', 'method' => 'initializeClasses' ),
w klasie InitHandler metodę initializeClasses
public function initializeClasses(){ $STB = new TV(); }
teraz w customerinfo chcę dodać listę urządzeń z pluginu więc zarejestrowałem handler: #v+ 'customerinfo_before_display' => array( 'class' => 'StbCustomerList', 'method' => 'stbCustomerInfo' ), #v-
w katalogu handlers StbCustomerList.php #v+ class StbCustomerList { protected $db; public function __construct() { $this->db = LMSDB::getInstance(); }
public function stbCustomerInfo(array $hook_data) { global $SMARTY, $STB; try { //$STB = new TV(); $stb = $STB->getUserStb($hook_data['customerinfo']['id']); } catch (Exception $e) { error_log($e); die(); } $SMARTY->assign('stb',$stb); return $hook_data; } } #v- No i php krzyczy, że odwołuję się do nie obiektu getUserStb, ale jak odkomentuje linijkię tworzącą obiekt to działa, ale obiekt taki utworzyłem w momecie rejestracji pluginu. jak mogę dostać się z tej funkci do obiektu? i jak uniknąć tego globala?
W dniu 14 listopada 2015 16:21 użytkownik Maciej Hiller < maciej.hiller@host24.pl> napisał:
Hej,
w momencie wykonywania modułu stbset.php nie wykonuje się stblist.php. Ja robię to tak, że dla np. pluginu LMSPlugin tworzę sobie plik plugins/LMSPlugin/lib/LMSPluginCommon z klasą LMSPluginCommon i w modułach $LMSPluginCommon = new LMSPluginCommon; i w tej klasie mam funkcje, które używam w więcej niż jednym module.
albo w handlers class LMSPluginCustomerHandler extends LMSPluginCommon (..)
W dniu 2015-11-14 15:42, Marcin napisał(a):
Witam Podpowiedzcie jak dostać się do instacji w klasie. Piszę plugin (jak będzie w pełni działał pojawi się git :)) do tv. Stworzyłem sobie klasę TV i w niej istancje. W menu mam link do mojego modułu "m=stblist" w którym to tworze sobie nowy obiekt klasy Tv #v+ $TV = new Tv($DB); #v- przekazuję $DB by uniknąć globalnych zmiennych. teraz jeśli w tym pliku stblist.php, w którym inicjalizuję obiekt próbuję się dostać do klasyt to jest bez problemu. Klasa na końcu wyświetla mi listę dekoderów (analogiczne z nodes).
Teraz chcę wykorzystać kontroli "podłącz/odłącz" i zrobiłem w pluginie/modules/stbset.php w którym chce zrobić odpowiednie zmiany (m=stbset&id=3). Niestety w tym pliku już nie mogę dostać się do swojej instancji $TV :/ wpisanie na początku "global $TV" niczego nie zmienia i nadal nie mogę dostać się do klasy :/
podpowiedzcie, jak dostać się w pliku stbset.php do instancji klasy zainicjowanej w pliku stblist.php?
--
Pozdrawiam Marcin / nicraM
lms mailing list lms@lists.lms.org.pl http://lists.lms.org.pl/mailman/listinfo/lms
-- pozdrawiam / best regards
Host24 Maciej Hiller _______________________________________________ lms mailing list lms@lists.lms.org.pl http://lists.lms.org.pl/mailman/listinfo/lms
by uniknąć globala w klasie TV: #v+ static $class = false;
static function get_conn() { if (self::$class == false) { self::$class = new TV(); } return self::$class; } #v- teraz w klasie StbCustomerList #v+ class StbCustomerList { protected $stb;
public function __construct() { $this->stb = TV::get_conn(); }
public function stbCustomerInfo(array $hook_data) { global $SMARTY;//, $STB; try { $res = $this->stb->getUserStb($hook_data['customerinfo']['id']); } catch (Exception $e) { error_log($e); die(); } $SMARTY->assign('stb',$res); return $hook_data; } } #v-
czy takie rozwiązanie na ominięcie globlala jest dobre? jeśli tak, można by i to do pozostałych klas zastosować.
W dniu 16 listopada 2015 17:19 użytkownik Marcin marcin@nicram.net napisał:
Odnośnie klas wpadłem na inny pomysł. Mianowicie chciałem zainicjować obiekt podczas rejestrowania pluginu.
w hadlerze dodałem: 'access_table_initialized' => array( 'class' => 'InitHandler', 'method' => 'initializeClasses' ),
w klasie InitHandler metodę initializeClasses
public function initializeClasses(){ $STB = new TV(); }
teraz w customerinfo chcę dodać listę urządzeń z pluginu więc zarejestrowałem handler: #v+ 'customerinfo_before_display' => array( 'class' => 'StbCustomerList', 'method' => 'stbCustomerInfo' ), #v-
w katalogu handlers StbCustomerList.php #v+ class StbCustomerList { protected $db; public function __construct() { $this->db = LMSDB::getInstance(); }
public function stbCustomerInfo(array $hook_data) { global $SMARTY, $STB; try { //$STB = new TV(); $stb = $STB->getUserStb($hook_data['customerinfo']['id']); } catch (Exception $e) { error_log($e); die(); } $SMARTY->assign('stb',$stb); return $hook_data; }
} #v- No i php krzyczy, że odwołuję się do nie obiektu getUserStb, ale jak odkomentuje linijkię tworzącą obiekt to działa, ale obiekt taki utworzyłem w momecie rejestracji pluginu. jak mogę dostać się z tej funkci do obiektu? i jak uniknąć tego globala?
W dniu 14 listopada 2015 16:21 użytkownik Maciej Hiller < maciej.hiller@host24.pl> napisał:
Hej,
w momencie wykonywania modułu stbset.php nie wykonuje się stblist.php. Ja robię to tak, że dla np. pluginu LMSPlugin tworzę sobie plik plugins/LMSPlugin/lib/LMSPluginCommon z klasą LMSPluginCommon i w modułach $LMSPluginCommon = new LMSPluginCommon; i w tej klasie mam funkcje, które używam w więcej niż jednym module.
albo w handlers class LMSPluginCustomerHandler extends LMSPluginCommon (..)
W dniu 2015-11-14 15:42, Marcin napisał(a):
Witam Podpowiedzcie jak dostać się do instacji w klasie. Piszę plugin (jak będzie w pełni działał pojawi się git :)) do tv. Stworzyłem sobie klasę TV i w niej istancje. W menu mam link do mojego modułu "m=stblist" w którym to tworze sobie nowy obiekt klasy Tv #v+ $TV = new Tv($DB); #v- przekazuję $DB by uniknąć globalnych zmiennych. teraz jeśli w tym pliku stblist.php, w którym inicjalizuję obiekt próbuję się dostać do klasyt to jest bez problemu. Klasa na końcu wyświetla mi listę dekoderów (analogiczne z nodes).
Teraz chcę wykorzystać kontroli "podłącz/odłącz" i zrobiłem w pluginie/modules/stbset.php w którym chce zrobić odpowiednie zmiany (m=stbset&id=3). Niestety w tym pliku już nie mogę dostać się do swojej instancji $TV :/ wpisanie na początku "global $TV" niczego nie zmienia i nadal nie mogę dostać się do klasy :/
podpowiedzcie, jak dostać się w pliku stbset.php do instancji klasy zainicjowanej w pliku stblist.php?
--
Pozdrawiam Marcin / nicraM
lms mailing list lms@lists.lms.org.pl http://lists.lms.org.pl/mailman/listinfo/lms
-- pozdrawiam / best regards
Host24 Maciej Hiller _______________________________________________ lms mailing list lms@lists.lms.org.pl http://lists.lms.org.pl/mailman/listinfo/lms
-- Pozdrawiam Marcin / nicraM
Ja bym utworzył obiekt klasy w danym module w którym jest on potrzebny.
W dniu 16.11.2015 o 17:58, Marcin pisze:
by uniknąć globala w klasie TV: #v+ static $class = false;
static function get_conn() { if (self::$class == false) { self::$class = new TV(); } return self::$class; }
#v- teraz w klasie StbCustomerList #v+ class StbCustomerList { protected $stb;
public function __construct() { $this->stb = TV::get_conn(); } public function stbCustomerInfo(array $hook_data) { global $SMARTY;//, $STB; try { $res =
$this->stb->getUserStb($hook_data['customerinfo']['id']); } catch (Exception $e) { error_log($e); die(); } $SMARTY->assign('stb',$res); return $hook_data; } } #v-
czy takie rozwiązanie na ominięcie globlala jest dobre? jeśli tak, można by i to do pozostałych klas zastosować.
W dniu 16 listopada 2015 17:19 użytkownik Marcin <marcin@nicram.net mailto:marcin@nicram.net> napisał:
Odnośnie klas wpadłem na inny pomysł. Mianowicie chciałem zainicjować obiekt podczas rejestrowania pluginu. w hadlerze dodałem: 'access_table_initialized' => array( 'class' => 'InitHandler', 'method' => 'initializeClasses' ), w klasie InitHandler metodę initializeClasses public function initializeClasses(){ $STB = new TV(); } teraz w customerinfo chcę dodać listę urządzeń z pluginu więc zarejestrowałem handler: #v+ 'customerinfo_before_display' => array( 'class' => 'StbCustomerList', 'method' => 'stbCustomerInfo' ), #v- w katalogu handlers StbCustomerList.php #v+ class StbCustomerList { protected $db; public function __construct() { $this->db = LMSDB::getInstance(); } public function stbCustomerInfo(array $hook_data) { global $SMARTY, $STB; try { //$STB = new TV(); $stb = $STB->getUserStb($hook_data['customerinfo']['id']); } catch (Exception $e) { error_log($e); die(); } $SMARTY->assign('stb',$stb); return $hook_data; } } #v- No i php krzyczy, że odwołuję się do nie obiektu getUserStb, ale jak odkomentuje linijkię tworzącą obiekt to działa, ale obiekt taki utworzyłem w momecie rejestracji pluginu. jak mogę dostać się z tej funkci do obiektu? i jak uniknąć tego globala? W dniu 14 listopada 2015 16:21 użytkownik Maciej Hiller <maciej.hiller@host24.pl <mailto:maciej.hiller@host24.pl>> napisał: Hej, w momencie wykonywania modułu stbset.php nie wykonuje się stblist.php. Ja robię to tak, że dla np. pluginu LMSPlugin tworzę sobie plik plugins/LMSPlugin/lib/LMSPluginCommon z klasą LMSPluginCommon i w modułach $LMSPluginCommon = new LMSPluginCommon; i w tej klasie mam funkcje, które używam w więcej niż jednym module. albo w handlers class LMSPluginCustomerHandler extends LMSPluginCommon (..) W dniu 2015-11-14 15:42, Marcin napisał(a): Witam Podpowiedzcie jak dostać się do instacji w klasie. Piszę plugin (jak będzie w pełni działał pojawi się git :)) do tv. Stworzyłem sobie klasę TV i w niej istancje. W menu mam link do mojego modułu "m=stblist" w którym to tworze sobie nowy obiekt klasy Tv #v+ $TV = new Tv($DB); #v- przekazuję $DB by uniknąć globalnych zmiennych. teraz jeśli w tym pliku stblist.php, w którym inicjalizuję obiekt próbuję się dostać do klasyt to jest bez problemu. Klasa na końcu wyświetla mi listę dekoderów (analogiczne z nodes). Teraz chcę wykorzystać kontroli "podłącz/odłącz" i zrobiłem w pluginie/modules/stbset.php w którym chce zrobić odpowiednie zmiany (m=stbset&id=3). Niestety w tym pliku już nie mogę dostać się do swojej instancji $TV :/ wpisanie na początku "global $TV" niczego nie zmienia i nadal nie mogę dostać się do klasy :/ podpowiedzcie, jak dostać się w pliku stbset.php do instancji klasy zainicjowanej w pliku stblist.php? -- Pozdrawiam Marcin / nicraM _______________________________________________ lms mailing list lms@lists.lms.org.pl <mailto:lms@lists.lms.org.pl> http://lists.lms.org.pl/mailman/listinfo/lms -- pozdrawiam / best regards Host24 Maciej Hiller _______________________________________________ lms mailing list lms@lists.lms.org.pl <mailto:lms@lists.lms.org.pl> http://lists.lms.org.pl/mailman/listinfo/lms -- Pozdrawiam Marcin / nicraM
-- Pozdrawiam Marcin / nicraM
lms mailing list lms@lists.lms.org.pl http://lists.lms.org.pl/mailman/listinfo/lms
W dniu 16 listopada 2015 18:48 użytkownik Maciej Lew < maciej.lew.1987@gmail.com> napisał:
Ja bym utworzył obiekt klasy w danym module w którym jest on potrzebny.
No właśnie dzięki wykorzystaniu metody statycznej po pierwsze unikamy używania zmiennych globalnych i tworzymy obiekt tam gdzie jest potrzebny
W dniu 16.11.2015 o 17:58, Marcin pisze:
by uniknąć globala w klasie TV: #v+ static $class = false;
static function get_conn() { if (self::$class == false) { self::$class = new TV(); } return self::$class; }
#v- teraz w klasie StbCustomerList #v+ class StbCustomerList { protected $stb;
public function __construct() { $this->stb = TV::get_conn(); } public function stbCustomerInfo(array $hook_data) { global $SMARTY;//, $STB; try { $res =
$this->stb->getUserStb($hook_data['customerinfo']['id']); } catch (Exception $e) { error_log($e); die(); } $SMARTY->assign('stb',$res); return $hook_data; } } #v-
czy takie rozwiązanie na ominięcie globlala jest dobre? jeśli tak, można by i to do pozostałych klas zastosować.
W dniu 16 listopada 2015 17:19 użytkownik Marcin < marcin@nicram.net marcin@nicram.net> napisał:
Odnośnie klas wpadłem na inny pomysł. Mianowicie chciałem zainicjować obiekt podczas rejestrowania pluginu.
w hadlerze dodałem: 'access_table_initialized' => array( 'class' => 'InitHandler', 'method' => 'initializeClasses' ),
w klasie InitHandler metodę initializeClasses
public function initializeClasses(){ $STB = new TV(); }
teraz w customerinfo chcę dodać listę urządzeń z pluginu więc zarejestrowałem handler: #v+ 'customerinfo_before_display' => array( 'class' => 'StbCustomerList', 'method' => 'stbCustomerInfo' ), #v-
w katalogu handlers StbCustomerList.php #v+ class StbCustomerList { protected $db; public function __construct() { $this->db = LMSDB::getInstance(); }
public function stbCustomerInfo(array $hook_data) { global $SMARTY, $STB; try { //$STB = new TV(); $stb = $STB->getUserStb($hook_data['customerinfo']['id']); } catch (Exception $e) { error_log($e); die(); } $SMARTY->assign('stb',$stb); return $hook_data; }
} #v- No i php krzyczy, że odwołuję się do nie obiektu getUserStb, ale jak odkomentuje linijkię tworzącą obiekt to działa, ale obiekt taki utworzyłem w momecie rejestracji pluginu. jak mogę dostać się z tej funkci do obiektu? i jak uniknąć tego globala?
W dniu 14 listopada 2015 16:21 użytkownik Maciej Hiller < maciej.hiller@host24.plmaciej.hiller@host24.pl> napisał:
Hej,
w momencie wykonywania modułu stbset.php nie wykonuje się stblist.php. Ja robię to tak, że dla np. pluginu LMSPlugin tworzę sobie plik plugins/LMSPlugin/lib/LMSPluginCommon z klasą LMSPluginCommon i w modułach $LMSPluginCommon = new LMSPluginCommon; i w tej klasie mam funkcje, które używam w więcej niż jednym module.
albo w handlers class LMSPluginCustomerHandler extends LMSPluginCommon (..)
W dniu 2015-11-14 15:42, Marcin napisał(a):
Witam Podpowiedzcie jak dostać się do instacji w klasie. Piszę plugin (jak będzie w pełni działał pojawi się git :)) do tv. Stworzyłem sobie klasę TV i w niej istancje. W menu mam link do mojego modułu "m=stblist" w którym to tworze sobie nowy obiekt klasy Tv #v+ $TV = new Tv($DB); #v- przekazuję $DB by uniknąć globalnych zmiennych. teraz jeśli w tym pliku stblist.php, w którym inicjalizuję obiekt próbuję się dostać do klasyt to jest bez problemu. Klasa na końcu wyświetla mi listę dekoderów (analogiczne z nodes).
Teraz chcę wykorzystać kontroli "podłącz/odłącz" i zrobiłem w pluginie/modules/stbset.php w którym chce zrobić odpowiednie zmiany (m=stbset&id=3). Niestety w tym pliku już nie mogę dostać się do swojej instancji $TV :/ wpisanie na początku "global $TV" niczego nie zmienia i nadal nie mogę dostać się do klasy :/
podpowiedzcie, jak dostać się w pliku stbset.php do instancji klasy zainicjowanej w pliku stblist.php?
--
Pozdrawiam Marcin / nicraM
lms mailing list lms@lists.lms.org.pl http://lists.lms.org.pl/mailman/listinfo/lms
-- pozdrawiam / best regards
Host24 Maciej Hiller _______________________________________________ lms mailing list lms@lists.lms.org.pl http://lists.lms.org.pl/mailman/listinfo/lms
-- Pozdrawiam Marcin / nicraM
-- Pozdrawiam Marcin / nicraM
lms mailing listlms@lists.lms.org.plhttp://lists.lms.org.pl/mailman/listinfo/lms
-- lion.net.pl - wdrożenia i rozwój Lan Management System
lms mailing list lms@lists.lms.org.pl http://lists.lms.org.pl/mailman/listinfo/lms
W dniu 14.11.2015 15:42, Marcin napisał(a):
Witam Podpowiedzcie jak dostać się do instacji w klasie. Piszę plugin (jak będzie w pełni działał pojawi się git :)) do tv. Stworzyłem sobie klasę TV i w niej istancje. W menu mam link do mojego modułu "m=stblist" w którym to tworze sobie nowy obiekt klasy Tv #v+ $TV = new Tv($DB); #v- przekazuję $DB by uniknąć globalnych zmiennych. teraz jeśli w tym pliku stblist.php, w którym inicjalizuję obiekt próbuję się dostać do klasyt to jest bez problemu. Klasa na końcu wyświetla mi listę dekoderów (analogiczne z nodes).
Przekazywanie obiektu $DB do obiektu w pluginie nie jest konieczne. Można w metodach handlerów pluginu używać LMSDB::getInsance() (to jest statyczna metoda publiczna).
Teraz chcę wykorzystać kontroli "podłącz/odłącz" i zrobiłem w pluginie/modules/stbset.php w którym chce zrobić odpowiednie zmiany (m=stbset&id=3). Niestety w tym pliku już nie mogę dostać się do swojej instancji $TV :/ wpisanie na początku "global $TV" niczego nie zmienia i nadal nie mogę dostać się do klasy :/
podpowiedzcie, jak dostać się w pliku stbset.php do instancji klasy zainicjowanej w pliku stblist.php?
--
Pozdrawiam Marcin / nicraM
lms mailing list lms@lists.lms.org.pl http://lists.lms.org.pl/mailman/listinfo/lms
uczestnicy (4)
-
Maciej Hiller
-
Maciej Lew
-
Marcin
-
Tomasz Chiliński