marca 31 2008

Dostęp do tablic poprzez magiczną metodę __get() w PHP5

Tag: PHPMatheW @ 23:19

Przypuśćmy, że mamy klasę i chcemy w niej za pomocą magicznej metody __get otrzymywać dostęp do pewnej tablicy:

class test {
	private $ar=array('field'=>array());	

	public function __get($name){
		return $this->ar[$name];
	}

	public function showMe(){
		var_dump($this->ar['field']);
	}
}

$a=new test;
$a->field[]='testValue';
$a->showMe();

Spodziewamy się, że za pomocą $a->field[]=’testValue’; dodamy do tablicy $a->ar['field'] wartość ‘testValue’. Jednak jak możemy się przekonać listując potem tablicę wcale tak się nie dzieje! Otóż tablice zwracane są w metodzie __get poprzez wartość, a nie referencję.

Rozwiązanie

Zamiast tablicy skorzystamy z .. obiektów, które w PHP5 zawsze są zwracane przez referencję. Doskonałym zamiennikiem zwykłej tablicy jest obiekt ArrayObject.

class test {
	private $ar=array('field'=>array());

	public function __construct(){
		$this->ar['field']=new ArrayObject;
	}

	public function __get($name){
		return $this->ar[$name];
	}

	public function showMe(){
		var_dump($this->ar['field']);
	}
}

$a=new test;
$a->field[]='testValue';
$a->showMe();

No i działa :]


marca 22 2008

Synchronizacja plików PHP w Eclipse część 1 – FTP

Tag: Eclipse, PHP, SoftwareMatheW @ 22:54

Synchronizacja jest niezwykle ważnym elementem w powstawaniu projektu programistycznego, szczególnie w tworzeniu aplikacji internetowych. Jest ona niezbędna przy pracy nad kodem w kilka osób, gdy każdy z programistów musi posiadać aktualne wersje aplikacji tworzone przez współpracowników, a także podczas pracy nad kodem na lokalnym stanowisku pracy, będąc jednocześnie zmuszonym do wgrywania plików na serwer poprzez FTP.

Do pracy nad kodem w grupie programistycznej znakomicie nadają się systemy kontroli wersji takie jak CVS, czy jego następca SVN. Dzięki nim zachowamy spójność w kodzie pomiędzy każdą osobą pracującą nad projektem i jednocześnie będziemy mieli podgląd wszystkich zmian zachodzących w kodzie, mając możliwość przywrócenia wersji pliku z jakiegokolwiek momentu byśmy chcieli. O systemach kontroli wersji więcej przyjdzie dowiedzieć się z następnej części artykułu.

FTP też może stanowić rodzaj synchronizacji wykorzystywanej w pracy grupowej, chociaż bardzo ubogiej. Niemniej jednak głównym celem FTP jest utrzymywanie najnowszej działającej wersji aplikacji na serwerze i wysyłanie nań jedynie zmienionych plików. Zwykle korzystamy z odrębnego klienta FTP jak np. FileZilla, Total Commander etc. jednak o wiele wygodniej jest, gdy możemy wysyłać pliki bezpośrednio z edytora. O tym traktować będzie ten artykuł.

Continue reading “Synchronizacja plików PHP w Eclipse część 1 – FTP”


marca 21 2008

Ubuntu Hardy Heron 8.04 Beta wydana

Tag: Linux, Systemy operacyjneMatheW @ 12:37

Zgodnie z zapowiedziami światło dzienne ujrzała wersja beta najpopularniejszej dystrybucji Linuksa – Ubuntu. Wydanie nazwane Hardy Heron (Śmiała Czapla) i oznaczone symbolem 8.04 jest wersją LTS i jako gotowy produkt ma zostać opublikowane 24 kwietnia.

Co nowego w najnowszej wersji Ubuntu? Podstawą są zaktualizowane wersje Xorg w wersji 7.3, Gnome 2.22 oraz naturalnie nowy kernel. Ciekawostką jest, że nowe wydanie posiada domyślnie zainstalowaną wersję beta Firefoxa 3. Zastanawiam się, czy w stabilnej wersji Ubuntu pojawi się także stabilna wersja Firefoxa, uzależnione to będzie zapewne od sprawności prac specjalistów Mozilli (twórcy Firefoxa twierdzą iż ich produkt jest już bardzo stabilny, ale wyjść ma dopiero w czerwcu).

Ponadto zaszło kilka zmian w zbiorze domyślnie instalowanych aplikacji. Transmission od teraz będzie standardowym klientem torrentów, podobnie jak Brasero będzie odpowiedzialny za wypalanie płyt CD i DVD, czy PulseAudio za dźwięk. Vinagre zastapi xvnc4viewer jako klient VNC . Do obrony przed atakami stworzony został Uncomplicated Firewall. Virtual Machine Manager pozwoli nam na wirtualizację innych systemów w Ubuntu.

Z innych nowości można zwrócić uwagę na znany niektórym wubi, który zezwala na instalację Ubuntu z poziomu Windows, nie potrzebując oddzielnej partycji. Przydatną właściwością będzie z pewnością przycisk Unlock w aplikacjach, które wymagać będą praw administratorskich dla niektórych działań, lecz będą mogły być uruchamiane z poziomu zwykłego użytkownika. Poza tym nastąpiło więcej bardziej lub mniej przydatnych zmian (głównie dla wersji serwerowej) opisanych na stronach dystrybucji.

W wersji systemu korzystającej ze środowiska KDE a nazwanej Kubuntu także zaistniały zmiany, na czele z nową wersją KDE w wersji 4.02. Jednocześnie mamy dostęp także do starszej wersji środowiska w wersji 3.5.9. Ponadto nowe wydania Amaroka, Kaffeine (teraz samo ściągnie niezbędne kodeki), a także Bulletproof X, który pomoże nam w konfiguracji X-ów.

Tych, którzy już chcą sprawdzić co nowego w tej popularnej instalacji zachęcam do ściągania i instalacji, ja czekam na oficjalne wydanie z niecierpliwością, gdyż zamierzam trochę przemeblować przestrzeń dyskową mego pececika :]


marca 17 2008

Pełne streszczenie lektury z klp.pl na jednej stronie

Tag: Internet, PHP, SzkołaMatheW @ 21:46

Serwis Kulturalna Polska (klp.pl) jest zapewne znany przez większość uczniów, którzy poszukiwali streszczeń, opracowań czy innych materiałów związanych z lekturami. Jednak czytanie materiałów tam udostępnionych jest o tyle trudne, że streszczenia podzielone są na wiele stron, co uniemożliwia łatwe skopiowanie całej treści i np. wydrukowanie.

Po raz kolejny doświadczając tego trudu postanowiłem napisać program w php do wczytywania treści streszczeń czy opracowań i wyświetlanie ich na jednej stronie, ułatwiając tym samym np. druk. Kodem się nie podzielę, gdyż jest brzydki i pisany na szybko, ale działa jak na razie w porządku (klp.pl ma bardzo brzydki kod html, przez co mogą wynikać jakieś błędy, szczególnie w przyszłości, gdy twórcy zmienią kod), w przypadku napotkania większych błędów proszę o kontakt, postaram się naprawić.

Program umieszczony jest pod adresem http://mwojcik.pl/klp/. Aby z niego skorzystać należy znaleźć na klp.pl potrzebną lekturę, wejść na pierwszą stronę streszczenia i wkleić jego adres i wkleić jej adres .

Dzięki pomysłowi Unita dokonałem poprawek - teraz można wpisac już zwykły adres lektury (np. http://krzyzacy.klp.pl) i program wyświetli nam spis treści.

Update. Troszeczke pozmieniałem styl, a także wprowadziłem ładne linki, przez co teraz można linkować do danego artykułu.

Miłego korzystania

UPDATE Niestety ze względów prawnych musiałem przestać publikować skrypt