Uchwycić moment…

menic’s devBlog

Archive for maj, 2007

Filter Functions ‘n’ array

Dzisiaj dopisywałem pare rzeczy do klasy validujacej formularze. Jakie było moje zdziwienie, gdy pozornie proste rzeczy nie chca dzialac. Chodzi mianowicie o funkcje filter_var i pochodne od niej. Problem jest w przekazywaniu tablic jako zmienne.

Manual napisał:
Value to filter, arrays are filtered recursively.

Ok wszystko sie zgadza. Ale dlaczego do cholery nie dopisali, ze w przypadku uzywania tablic trzeba dodac stałą FILTER_FORCE_ARRAY ? A ja tyle czasu straciłem przez to :|

No comments

ObjectToArray()

Kiedys chciałem napisac klase do cache'owania obiektow simplexml. Jednak jak sie okazało w praktyce, jest to niemozliwe. To co mnie trzymało przy simplexml to wygoda dostepu do danych w nim zawartych. Napisałem, wiec sobie mala funkcje przeksztalcajaca obiekt w wielowymiarowa tablice. Wygoda praktycznie taka sama jak przy obiekcie, a dodatkowo mozemy calosc ladnie poddac serializacji :)
Tararam:

PHP:
  1. <?php
  2. /**
  3. * Dokonuje konwersji z object na array rekursywnie
  4. *
  5. * @param object $z
  6. * @return aray
  7. */
  8. function objToArray(&$z)
  9. {
  10. if( is_array( $z ) )
  11. {
  12. foreach( $z as $k=>$v )
  13. {
  14. if( is_object( $z[$k] ) )
  15. {
  16. $z[$k] =(array)$v;
  17. $z[$k] = objToArray( $z[$k] );
  18. }
  19. }
  20. }
  21. else
  22. {
  23. settype( $z, 'array' );
  24. objToArray( $z );
  25. }
  26. return $z;
  27. }
  28. ?>

16 comments

Moje __autoload() :)

W miare jak SparkleWorks sie rozrasta, coraz trudniej zapanowac nad wszystkimi klasami. Na poczatku wszystko wczytywałem sobie recznie przez include. Było znosnie... ale gdy doszły mi automatycznie generowane klasy modelu, to pisanie

PHP:
  1. include(sciezka/model.class.php;
  2. $o = new Model()

byłoby niesamowicie meczace. Naturalną rzaczą jest, ze pomyslalem o __autoload()
Na poczatku było samo generowanie mapy. Jednak postanowiłem troche rozszerzyc. Do standardowej mapy mozemy dorzucic inne pliki lub tez cale foldery. Wszystko oczywiscie w XMLu :) Teraz moze zaden pozytek, ale z czasem jak zajdzie potrzeba dolaczenia innych bibliotek to bedzie juz to z głowy :)

XML:
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <filemap enabled="false">
  3. <files enabled="true">
  4. <class name="auto" enabled="true">E:\auto.php</class>
  5. <class name="test" enabled="true">E:\www\test.php</class>
  6. </files>
  7. <dirs enabled="true">
  8. <dir recursive="true" enabled="true" suffix="class.php">E:\system\classes</dir>
  9. </dirs>
  10. </filemap>

Wyjasniac chyba nie trzeba :)
Pod adresem klasa dla zainteresowanych. Z gory mowie ze jest to czesc SparkleWorks, wiec pewne wstawki z frameworka sa :) Jest to tez wersja robocza, tak wiec nie wszystko jest cacy, ale z gory dzieki za wskazowki :)

4 comments

Zbliża się koniec prac

Powoli zblizam sie do końca prac związanych z SparkleWorks. Teraz jeszcze prace kosmetyczne, dodanie tu i tam wyjątków, komentarzy. Oczywiscie cała funkcjonalnosc jaka sobie wymysliłem nie została zrobiona. Gdybym na to czekał to nigdy pewnie bym go nie ukończył. Do zrobienia na poźniej pozostanie Cache, jakis generator administracji oraz inne przydatne rzeczy. Ale to już po pierwszym wydaniu. Uporządkuje kod i zabieram sie do konkretnej roboty. Jako pierwsze na igien podzie chyba strona kółka KOS. Narazie tylko jeszcze nie wiem jaką funkcjonalnośc musi posiadać, ale jak tylko bede miał plan działania to sie zabieram za realizacje. Mysle ze bedzie to sama przyjemnosc, wykorzystac w akcji SparkleWorks :)
A co do licencji... Jak by ktoś pytał to jeszcze się nie zdecydowałem :P

2 comments