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> 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



--
Pozdrawiam
Marcin / nicraM


_______________________________________________
lms mailing list
lms@lists.lms.org.pl
http://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




--
Pozdrawiam
Marcin / nicraM