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:
- RecursiveIterator
- ArrayAccess
- 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:
$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)
)
(
[*__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")
)
)
)
(
[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
$m1->clear();
Out(vardump):
Kod
object["Memory"][4]
(
[*__data] => array[0]
(
)
[*__length] => integer (0)
[*__arrayAsSelf] => boolean (true)
[*__lastKey] => void[NULL]
)
(
[*__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
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)
)
(
[*__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
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)
)
(
[*__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
$m1 = new Memory(array("test"=>"testowa wartość", "t"=>array("t2"=>array("ttt"=>"gleboka wartosc")))); // gdy tablice są traktowane jako self obiekt to można stosować:
To myślę wszystko w opisie z mojej strony.
Proszę o ocenę oraz zgłoszenie ewentualnych poprawek.