Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Klasa]Memory.class.php
Forum PHP.pl > Forum > Gotowe rozwiązania > Algorytmy, klasy, funkcje
shinuexx
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.
ano
Hmmm... ale po co to właściwie jest? Jakie jest praktyczne zastosowanie?
shinuexx
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.