Niezalogowany [ logowanie ]
Subskrybuj kanał ATOM Kanał ATOM

Autor wpisu: normanos, dodany: 28.06.2007 19:45, tagi: internet

Od jakiegoś czasu chodzi nam (ślązakom ) po głowie pomysł zorganizowania spotkania osób z luźno pojętej “branży internetowej”. Warszawa ma aż dwie takie imprezy: Innowatorium oraz Bootstrap, Wrocław ma swoje GrillIT z mutacją krakowską (GrillIT Kraków) a na śląsku nic. Pusto. Cisza. Korzystając z okazji uruchomienia beta wersji pewnego śląskiego startupa stwierdziliśmy, że [...]

Autor wpisu: Marcin MySZ Sztolcman, dodany: 24.06.2007 13:23, tagi: php, php5

W PHP5 został wprowadzony nowy, zupełnie odmienny, i znacznie pełniejszy model obiektowy (w porównaniu do PHP4). W modelu tym znalazło się miejsce dla kilku magicznych metod, które chciałbym tutaj omówić.

Dwoma z najprzyjemniejszych metod magicznych w PHP5 są __set() i __get(), które pozwalają na przechwytywanie odwołań do nieistniejących (lub niedostępnych z powodu akcesorów) zmiennych obiektu.

Wcześniej, przed wersją piątą PHP, jedynym sposobem na pobranie/ustawienie właściwości w pewien uniwersalny i umożliwiający rozwój sposób było stosowanie znanych m.in. z Javy setterów/getterów, które zwyczajowo mają postać:

class Test1 {
    var $elem1;
    function getElem1();
    function setElem1($value);
}

Używałem tej samej metody, jako że innej nie było. Ale magiczne właściwości __set() i __get() załatwiają dla nas masę pustego klepania kodu. Sposób użycia:

class Test1 {
    private $elem1;
    function __get($var) {
        return $this->$var;
    }
    function __set($var, $value) {
        $this->$var = $value;
    }
}

Oczywiście powyżej można zawrzeć także sprawdzanie czy dana właściwość istnieje w obiekcie, ale to już osobna kwestia. Co nam daje powyższy zapis? To, że dla drugiej właściwości, w metodzie “starej”, trzeba by utworzyć kolejne metody setXXX() i getXXX(), natomiast przy wykorzystaniu metod magicznych pozostaje nam dodać tylko kolejne pole do definicji klasy:

[...]
    private $elem1;
    private $elem2;
[...]

Ktoś może powiedzieć: ale ręczne tworzenie setterów i getterów daje nam możliwość bardziej zaawansowanej walidacji poprawności wprowadzanych danych etc. Owszem, zawsze do bardziej zaawansowanej walidacji potrzebna będzie osobna metoda (no dobrze, można to ominąć kosztem zaciemnienia kodu, ale to nie jest dobre rozwiązanie…), ale to nie powód żeby zrezygnować z magii:

class Test2 {
	private $integer;
	private $string;

	public function __get($var) {
		return $this->$var;
	}
	public function __set($var, $value) {
		if (method_exists($this, '_check__'.$var)) {
			if (call_user_func_array(array($this, '_check__'.$var), $value)) {
				$this->$var = $value;
			} else {
				throw new Exception('zła wartość właściwości '. $var);
			}
		} else {
			$this->$var = $value;
		}
	}
	private function _check__integer($data) {
		return is_int($data);
	}
	private function _check__string($data) {
		return is_string($data);
	}
}

Powyższy kod pozwala na dodawanie dowolnej ilości właściwości klasy, a po dodaniu funkcji sprawdzającej także walidację tejże właściwości. Trzeba tylko pamiętać o właściwej nazwie funkcji sprawdzającej, ale to samo dotyczy tradycyjnych getterów :).

Inną magiczną funkcją w PHP5 jest __call(), która pełni podobną funkcję jak __set() i __get(), tylko że dotyczy metod obiektu: przechwytuje odwołania do nieistniejących metod obiektu (niestety, nie dotyczy to metod o zastrzeżonym dostępie). Przykład zastosowania:

class Test3 {
	public $data;
	public function __call($method, $args) {
		if (preg_match('/^get([A-Z][a-z]+)$/', $method, $matches)) {
			settype($this->data, strtolower($matches[1]));
			return $this->data;
		}
	}
}

Przykład powyżej pozwala na pobranie właściwości o typie takim jaką metodą ją wywołamy. Dla wywołania: $test3->getInteger() otrzymamy wartość o typie integer, dla $test3->getString() - ciąg znaków etc.

Czytaj dalej tutaj (rozwija treść wpisu)
Czytaj dalej na blogu autora...

Autor wpisu: Splatch, dodany: 18.06.2007 23:41, tagi: framework, php

Dzisiaj rano światło dzienne ukazało się Agavi 0.11 RC5, oprócz poprawek błędów z wersji RC4 doszło parę nowości:
- Pełne wsparcie dla generowania WSDL, automatyczne mapowanie akcji a nawet wsparcie dla obsługi nagłówków SOAP.
- Wsparcie dla transformacji plików konfiguracyjnych poprzez zamieszczanie instrukcji < ?xml-stylesheet?>
- Wsparcie dla przestrzeni nazw w plikach konfiguracyjnych
- Automatyczna obsługa magic_quotes dla zmiennych superglobalnych

Pojawiły się drobne zmiany w API do obsługi configów oraz nowy sposób ich odczytu, który wejdzie do użytku w wersji 1.0. Póki co jest tylko testowy a jedynym handlerem, który został zaimplementowany "na nowo" jest ten obsługujący WSDL.

Dodam, że Agavi to pierwszy framework PHP, który rozwiązuje kwestie dostępu do akcji w tak elastyczny sposób. Niezależnie od tego jakim sposobem zostało przysłane żądanie akcja wygląda tak samo. Jest to krok w stronę dojrzałych rozwiązań tj Spring Framework. Pytanie tylko - czy developerom uda się zachować pierwotną prostotę i ile pracy trzeba będzie włożyć w użycie danego rozwiązania? Odpowiedź na nie pozostaje póki co zagadką a pełnej oceny będziemy mogli dokonać po ukazaniu się wersji 1.0 wraz z dokumentacją.

Zainteresowanych naturalnie Agavi zapraszam do traca i przeglądania źródeł wersji 0.11 RC5. :)

Autor wpisu: Zyx, dodany: 17.06.2007 15:52, tagi: php

Kończę właśnie kolejny projekt (on jest główną przyczyną zastoju na zyxist.com) i pojawił się problem, jakiej firmie powierzyć jego hosting. Sprawa jest o tyle istotna, że niemal każda dotąd testowana lub analizowana ma jakąś wkurzającą lub utrudniającą życie programiście wadę. Dlatego zwracam się z prośbą do czytelników o podzielenie się swoimi doświadczeniami.

Autor wpisu: Splatch, dodany: 13.06.2007 01:11, tagi: framework

Dzisiaj (w zasadzie wczoraj) w otchłani skrzynki odbiorczej RSSOwl znalazłem link do propozycji wspomnianego projektu.

Czym ma on być? Ma być ujednoliconym szkieletem umożliwiającym programistom dostęp do baz danych, dokumentów XML jak i zewnętrznych systemów pokroju EAI przy użyciu istniejących technologii tj. Java Persistence API (JPA), Java Architecture for XML Binding (JAXB), Java Connector Architecture (JCA), and Service Data Objects (SDO). Cel ma być uzyskany we współpracy ze specjalistami od OSGi przy pomocy implementacji przykładowych implementacji, które pokażą jak używać wcześniej wymienionych interfejsów. Dzięki oparciu całości na platformie OSGi pomysłodawcy chcą zyskać niebywałą do tej pory w tego typu projektach przenośność i modularność co w połączeniu ma zaowocować mariażami (a może mezaliansami) różnego rodzaju.
Na stronie z propozycją jest prosty schemat, który wstępnie obrazuje architekturę szkieletu:

Eclipse Persistence Services Project

Warto zwrócić uwagę na to, że całość projektu nie będzie uzależniona od Eclipse jako takiego a jest tylko rozwijana w ramach fundacji eclipse. Całość będzie można używać zarówno z poziomu Javy EE jak i Javy SE (jak domniemywam również Swing).

Głównym pomysłodawcą projektu jest Oracle z którego ramienia będzie póki co pracować najwięcej developerów, głównie tych, którzy wcześniej zajmowali się TopLinkiem. Jakkolwiek w deklaracji pod koniec propozycji pada zdanie czy też zaproszenie - drzwi są otwarte dla chętnych. :)

Osobiście jestem bardzo ciekaw efektów jakie przyniesie ten projekt, ponieważ znacznie by on ułatwił prace nad aplikacjami stricle biznesowymi opartymi na Eclipse RCP z racji na to, że wystarczy podpiąć się do dostarczonych usług OSGi by móc korzystać z bazy danych czy też wyciągać dane z jakiegoś podsystemu. Fajnie by było uprościć walki, powiedzmy z Hibernate i jego używaniem pod RCP.
Dodam, że Eclipse Persistence Services to kolejny "dość egzotyczny" projekt realizowany w ramach fundacji nie związany ściśle z platformą Eclipse - wystarczy wspomnieć Eclipse Communication Framework z inkubatora, który w wersji 1.0 wchodzi już w skład najbliższego zbiorczego wydania - Europy

Autor wpisu: WojciechNaruniec, dodany: 08.06.2007 11:23, tagi: php

Wczoraj przeprowadziłem migrację biblioteki Zend Framework z wersji 0.8.0 do 1.0.0RC1 w mojej aplikacji. Zamieszczam spis najważniejszych zadań jakie trzeba było wykonać, myślę, że może to trochę ułatwić przejście przez proces migracji. Ładowanie plików oraz klas Korzystanie z rejestru Informacje o wersji Nazwy tabel w modelach Aliasy dla tabel w zapytaniach Wyświetlanie informacji o zmiennych Metoda find() w modelach Przekierowania Filtrowanie danych przychodzących Klasa ViewRenderer 1. [...]

Autor wpisu: menic, dodany: 07.06.2007 00:17, tagi: internet

Chciałbym zaprosić wszystkich, którzy w dniu 15 czerwca będą w Rzeszowie na konferencje pt. Kierunek 2.0 – czyli praktycznie wszystko o najnowszych trendach w sieci i co z tego wynika…
W dalszej częsci więcej informacji.

Termin: 15 czerwca 2007, od 10 00 do 18 00

Organizator: Wyższa Szkoła Informatyki i Zarządzania w Rzeszowie, ul. Sucharskiego 2, Aula A3

KONFERENCJA INNA NIŻ WSZYSTKIE:

Sporo się dzisiaj mówi o problematyce zmian w sposobie korzystania i tworzenia zawartości w sieci, a termin Web 2.0 wszedł do obiegu również w Polsce. Różne konferencje i spotkania analizują nowe zjawiska z różnych perspektyw: społecznych, biznesowych, marketingowych. Brak jednak imprez mających na celu wymianę doświadczeń ludzi z różnych branż. Dlatego organizowane przez nas spotkanie będzie miało charakter interdyscyplinarny, zostaną na nią zaproszeni eksperci, socjologowie, ale także praktycy: twórcy serwisów wpisujących się w trend Web 2.0 oraz specjaliści od marketingu. Wpłynie to z pewnością na atrakcyjność tego wydarzenia oraz na możliwość analizy interesujących kwestii z wielu komplementarnych perspektyw. Planujemy, żeby była to impreza cykliczna, na której będą się spotykali ludzie związani na co dzień tworzeniem innowacyjnych rozwiązań, analizą zmian technologicznych i społecznych w sieci.

O randze imprezy może świadczyć fakt, że sponsorem imprezy jest Coca-Cola (a konkretniej serwis Coke.pl), a głównym partnerem jedna z najlepszych agencji kreatywnych w nowych mediach - Agencja Interaktywna Opcom (Grupa Eskadra).
Uruchomiona zostanie strona imprezy wraz z blogiem (kierunek20.pl) stale aktualizowanym przez organizatorów o nowe informacje dotyczące zaawansowania prac nad konferencją, a także najciekawsze artykuły poruszające problematykę Web 2.0. Oprócz tego na stronie zostanie zgromadzona lista linków do stron związanych z Web 2.0 (w tym serwisów wpisujących się w ten trend), oraz ciekawe wpisy z blogów zaproszonych gości. Po konferencji umieszczone zostaną pliki video z wystąpieniami zaproszonych.

Dlaczego w Rzeszowie? Wyższa Szkoła Informatyki i Zarządzania jest zaliczana do najlepszych niepaństwowych uczelni w kraju. Obecnie studenci uczelni sami pracują nad serwisami wpisującymi się w najnowsze trendy w sieci, z czego serwis tonieproblem.pl („samopomoc uczniowska” dla licealistów) już ruszył w wersji testowej, a kolejne są w trakcie zaawansowanych prac. Aktywność studentów przejawia się również w działalności wielu kół naukowych, w tym KOS (Koło Open Source).

ZAPROSZENI GOŚCIE:
Swój udział potwierdzili między innymi:

  • Edwin Bendyk (dziennikarz Polityki, autor „Antymatrix, człowiek w labiryncie sieci” oraz zbioru esejów „Zatruta studnia”, a także jednego z najciekawszych blogów w polskiej blogosferze: http://bendyk.blog.polityka.pl/), opowie o zmianach technologicznych i społecznych, które mają wpływ na życie ludzi, również na korzystanie z Internetu. Będzie to doskonałe wprowadzenie do problematyki Web 2.0…

Wszystkie wpisy należą do ich twórców. PHP.pl nie ponosi odpowiedzialności za treść wpisów.