Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Klasa]Memory.class.php, Klasa do magazynowania zmiennych
shinuexx
post 26.07.2012, 21:13:29
Post #1





Grupa: Zarejestrowani
Postów: 78
Pomógł: 9
Dołączył: 2.02.2011
Skąd: undefined

Ostrzeżenie: (0%)
-----


Witam
Napisałem klasę grupującą używanie zmienne oraz umożliwiającą łatwy do nich dostęp. Pierwotnie miałem ją zrobić składową klasy do obsługi języków, ale stwierdziłem że osobna klasa będzie bardziej przydatna. W związku z powyższym, dzielę się moimi wypocinami;P

Memory.class.php

Opis:

Klasa implementuje interfejsów:
  1. RecursiveIterator
  2. ArrayAccess
  3. Countable

Zakładam że znane są metody tych interfejsów, więc pominę je w opisie.

Metody własne:

Memory::__construct([$data = array() [, $filter = false [,$arrayAsSelf = true ]]]) - public
Konstructor klasy
$data - dane w postaci tablicy które mają zostać dodane na wstępie
$filter - czy wpisy z niepoprawnymi kluczami mają zostać odfiltrowane
$arrayAsSelf - czy podtablice mają być traktowane jako obiekty Memory
Przykład:
  1. $m1 = new Memory(array("test"=>"testowa wartość", "t"=>array("t2"=>array("ttt"=>"gleboka wartosc"))));

Out(vardump):
Kod
object["Memory"][4]
(
    [*__data] => array[2]
    (
        [test] => string[17] ("testowa wartość")
        [t] => array[1]
        (
            [t2] => array[1]
            (
                [ttt] => string[15] ("gleboka wartosc")
            )
        )
    )
    [*__length] => integer (2)
    [*__arrayAsSelf] => boolean (true)
    [*__lastKey] => string[1] ("t") ord(116)
)


Memory::getArray(void) - public
Funkcja zwraca listę zmiennych w postaci tablicy
Out(vardump):
Kod
array[2]
(
    [test] => string[17] ("testowa wartość")
    [t] => array[1]
    (
        [t2] => array[1]
        (
            [ttt] => string[15] ("gleboka wartosc")
        )
    )
)


Memory::isEmpty(void) - public
Sprawdza czy pamięć jest pusta

Out(vardump):
Kod
boolean (false)



Memory::clear(void) - public
Czyszczenie pamięci
  1. $m1->clear();

Out(vardump):
Kod
object["Memory"][4]
(
    [*__data] => array[0]
    (
    )
    [*__length] => integer (0)
    [*__arrayAsSelf] => boolean (true)
    [*__lastKey] => void[NULL]
)



Memory::import($array[,$filter = false]) - public
Importowanie danych z tablicy
$array - tablica z danymi
$filter - tak jak w przypadku konstruktora czy niepoprawne klucze mają zostać odfiltrowane
  1. $m1->import(array('tt'=>'gg'));

Out(vardump):
Kod
object["Memory"][4]
(
    [*__data] => array[1]
    (
        [tt] => string[2] ("gg") ord(103;103)
    )
    [*__length] => integer (1)
    [*__arrayAsSelf] => boolean (true)
    [*__lastKey] => string[2] ("tt") ord(116;116)
)



Memory::merge($array[,$filter = false]) - public
Dołączanie tablicy bądź obiektu Memory do aktualnego obiektu
$array - tablica z danymi bądź obiekt Memory
$filter - tak jak w przypadku konstruktora czy niepoprawne klucze mają zostać odfiltrowane
  1. $m1->merge(array('ddd'=>'gg'));

Out(vardump):
Kod
object["Memory"][4]
(
    [*__data] => array[3]
    (
        [test] => string[17] ("testowa wartość")
        [t] => array[1]
        (
            [t2] => array[1]
            (
                [ttt] => string[15] ("gleboka wartosc")
            )
        )
        [ddd] => string[2] ("gg") ord(103;103)
    )
    [*__length] => integer (3)
    [*__arrayAsSelf] => boolean (true)
    [*__lastKey] => string[3] ("ddd") ord(100;100;100)
)



Memory::_recount(void) - protected
Przeliczanie i szukanie ostatniego klucza w tablicy zmiennych

Memory::_arrayChecker(&$array[,$filter = false]) - protected
Sprawdzanie poprawności kluczy w tablicy
&$array - referencja do sprawdzanej tablicy
$filter - tak jak w przypadku konstruktora czy niepoprawne klucze mają zostać odfiltrowane

Memory::varnamechecker($varname) - public static
Sprawdzanie poprawności nazwy zmiennej
$varname - nazwa zmiennej



Dostęp do zmiennych jest zapewniony na 3 różne sposoby
  1. $m1 = new Memory(array("test"=>"testowa wartość", "t"=>array("t2"=>array("ttt"=>"gleboka wartosc"))));
  2.  
  3. echo $m1->test.PHP_EOL; // testowa wartość
  4. echo $m1['test'].PHP_EOL; // testowa wartość
  5. echo $m1('test').PHP_EOL; // testowa wartość
  6. // gdy tablice są traktowane jako self obiekt to można stosować:
  7. echo $m1->t->t2->ttt.PHP_EOL // gleboka wartosc
  8.  
  9. echo $m1('t')->t2['ttt'].PHP_EOL // gleboka wartosc
  10.  


To myślę wszystko w opisie z mojej strony.
Proszę o ocenę oraz zgłoszenie ewentualnych poprawek.
Go to the top of the page
+Quote Post
ano
post 26.07.2012, 21:21:03
Post #2





Grupa: Zarejestrowani
Postów: 435
Pomógł: 40
Dołączył: 16.02.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Hmmm... ale po co to właściwie jest? Jakie jest praktyczne zastosowanie?


--------------------
Linkedin | ...
Go to the top of the page
+Quote Post
shinuexx
post 26.07.2012, 21:45:50
Post #3





Grupa: Zarejestrowani
Postów: 78
Pomógł: 9
Dołączył: 2.02.2011
Skąd: undefined

Ostrzeżenie: (0%)
-----


Dopisujesz singleton i masz globalne właściwości dla aplikacji dostępne w każdym miejscu aplikacji. Poza tym tak jak napisałem powyżej używam tego w klasie obsługującej języki jako pamięć wartości z bardzo wygodnym dostępem do nich za pomocą operatora klasowego.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.04.2024 - 13:39