Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Autor: Piotr Szawdyński
Inne artykuły

Microsoft Expression Web 4 + PHP?

[artykuł] Artykuł opisuje produkt Microsoft Expression Web 4 z punktu widzenia osoby wytwarzającej strony Internetowe w oparciu o język skryptowy PHP.

Wstęp

Microsoft Expression Web 4 jest kolejnym produktem firmy Microsoft skierowanym do osób zajmujących się wytwarzaniem oprogramowania. W przypadku produktu Expression Web mamy na myśli deweloperów zajmujących się wytwarzaniem serwisów Internetowych. W moim kręgu zainteresowań jest język PHP, który jest bardzo chętnie stosowanym językiem skryptowym przez web deweloperów. Jak zapewne wiesz, język skryptowy PHP sprawdza się przy wytwarzaniu małych i średnich serwisów Internetowych. Jak wiadomo, w każdym projekcie wraz z przyrostem liczby plików i ilości kodu pojawia się problem efektywnego poruszania się po projekcie. Firma Microsoft słynie z rewelacyjnych rozwiązań w swoich produktach skierowanych do deweloperów, a w tym artykule opiszę blaski i cienie produktu Microsoft Expression Web 4 w odniesieniu do języka skryptowego PHP z którymi się zetknąłem.

Moje doświadczenie

Zanim przejdę do właściwej części artykułu dobrze będzie, jeśli opiszę pokrótce profil swojej osoby. Jeżeli jesteś doświadczonym deweloperem to z pewnością da Ci to pogląd na zastosowane przeze mnie kryteria w celu oceny użyteczności produktu Expression Web.

Generalnie rzecz ujmując na co dzień zajmuję się profesjonalnym wytwarzaniem aplikacji w języku C++. Do pracy z językiem C++ używam produktu Microsoft Visual C++ 2008, więc jest to bardzo dobry punkt odniesienia co powinno posiadać profesjonalne środowisko deweloperskie. W języku C++ mam doświadczenie w pracy z projektami powyżej miliona linii kodu wytwarzanego przez zespół programistów tak więc bardzo dobrze wiem jakie narzędzia poprawiają jakość pracy. Drugim kluczowym atrybutem, który wpłynie na moją ocenę tego produktu jest bardzo dobra znajomość języka PHP - przy pomocy tego języka został napisany przeze mnie cały silnik serwisu programistycznego http://cpp0x.pl. Dodatkowo mogę napisać jeszcze, że posiadam profesjonalną wiedzę z projektowania relacyjnych baz danych zarówno w aplikacji MySQL 5.1 jak i MSSQL Server 2000, aczkolwiek wiedza ta nie będzie rzutowała w żaden sposób na ocenę tego produktu. Repozytoria danych typu Subversion również nie są mi obce, a co więcej są stosowane u mnie na porządku dziennym.

Pierwsze uruchomienie i pierwsze wrażenie

Pierwsze uruchomienie aplikacji - na pierwszy rzut oka aplikacja wygląda bogato - mnóstwo paneli zarówno na okoliczność stylów CSS jak i HTML-a. Patrząc z punktu widzenia początkującego web dewelopera takie narzędzia stanowią komfortowy element, jednak osoba ze sporym doświadczeniem po prostu te panele zamknie przy pierwszej lepszej okazji - po prostu szkoda miejsca na ekranie podczas klepania kodu w PHP.

Tworzenie nowego projektu

Chcąc jak najszybciej rozpocząć pracę z produktem Expression Web pierwsze co mi przyszło na myśl to utworzenie nowego projektu. Będę mógł wówczas dodać wybrane pliki istniejącego projektu do solucji, którą znałem ze środowiska Visual C++. Ciesząc się nowo zainstalowaną aplikacją wybrałem z menu polecenie File / New / ... i mnie zamurowało - nie ma tam możliwości tworzenia projektów! Na dobry początek pracy z programem Expression Web dostajemy strzał w stopę. Nie wiem jakie praktyki mają web deweloperzy ale wydaje mi się, że tworzenie projektu jest niezbędnym elementem projektów większych niż dwie strony na krzyż. W tym momencie pojawiła się frustracja, a zaraz za nią w myślach zawrzało: 'Produkt za 149 dolarów nie ma możliwości tworzenia projektów?!'. Zirytowany zacząłem przeglądać to całe bogate menu w poszukiwaniu możliwości stworzenia projektu. Szukam, szukam, szukam... i nie ma.

Podejście drugie: jeżeli czegoś nie ma, a powinno być - pomyśl gdzie Microsoft by to wstawił. Gdzieś do roku 2003 naturalnym było, że wszystkich opcji dowolnego programu należy szukać w menu. Niestety tak było do pewnego czasu i nastała nowa era w firmie Microsoft pt. 'zmieńmy interfejs użytkownika bo na szkoleniach już nie zarabiamy'. Tak też się stało i z uporem maniaka zaczęto tworzyć nowy 'lepszy' świat w którym klasyczne, a zarazem sprawdzone menu zaczęto sukcesywnie eliminować na rzecz 'intuicyjnego' paska narzędzi z wielkimi klockami ilustrującymi dają funkcjonalność. Skoro tych nowych 'klocków' firma Microsoft jeszcze nie wprowadziła do produktu Expression Web to być może coś się znajdzie na paskach narzędzi... i faktycznie. Obok ikony tworzenia nowego pliku znajduje się ikona umożliwiająca utworzenie nowego projektu. Dymek tej ikony jest następującej treści "New site..." i jesteśmy w domu. Szkoda tylko, że pierwszy kontakt z aplikacją okazuje się skrajnie nieintuicyjny.

Zarządzanie utworzonym projektem

Po ciężkiej i wyczerpującej przeprawie z utworzeniem pierwszego projektu w programie Expression Web byłem przekonany, że jest to niedopatrzenie ze strony firmy Microsoft. Po zatwierdzeniu formularza tworzącego projekt okazało się, że jest to dopiero początek drogi przez mękę z tą aplikacją.

Pliki należące do projektu

Po utworzeniu projektu w jakimś katalogu na dysku ukazuje się nam panel zatytułowany "Folder List". Panel ten zawiera listę wszystkich plików jakie się znajdują we wskazanym katalogu. Pierwsze pytanie jakie się mi nasunęło to: 'po co mi lista wszystkich plików w katalogu skoro chcę mieć dobry edytor do plików PHP?'. W związku z zaistniałą sytuacją kolejnym krokiem jaki podjąłem to próba znalezienia jakiegoś panelu w którym będzie można określić jakie pliki mają należeć do projektu. Szukałem, szukałem, szukałem i nic - po prostu nie ma takiej możliwości. No trudno - być może jest jakieś racjonalne uzasadnienie takiego stanu rzeczy. W myśl mojej idei 'nie wszystko musi być złe czego nie znamy' postanowiłem brnąć dalej. Wymyśliłem sobie teorię, że w projekcie serwisu Internetowego zamieszcza się przecież wiele plików o różnych rozszerzeniach więc może analitycy firmy Microsoft stwierdzili, że tak będzie praktyczniej bo nie trzeba się bawić w dodawanie plików do projektu jak to ma miejsce np. w programie Microsoft Visual C++. Pomysł moim zdaniem chybiony no ale ostatnimi czasy firma Microsoft tylko takimi pomysłami się wykazuje więc w tej kwestii trzymają poziom.

Obsługa wersjonowania (Subversion)

No dobra, ale skoro dostajemy listę wszystkich plików, które znajdują się fizycznie na dysku w danym katalogu to powinna być możliwość zarządzania nimi taka jak w Windowsie - kopiuj, wklej, przenieś czy też w moim przypadku zarządzanie repozytorium SVN poprzez Tortoise SVN. Pierwsze co się rzuca w oczy to brak oznaczenia plików, które są wersjonowane, a które nie - 'trudno, ale może pod prawym klawiszem będzie' - myślę sobie... kliknąłem, zobaczyłem i nie wierzyłem. Kolejna porażka produktu Expression Web - nie posiada menu kontekstowego dostępnego w Windowsie, a zatem nie ma możliwości zarządzania repozytorium z poziomu tej aplikacji.

Znając bardzo dobrze produkt Microsoft Visual C++ postanowiłem zapoznać się z opcjami programu - w aplikacji Visual C++ istnieje bowiem możliwość wybrania wtyczki do zarządzania systemem kontroli wersji. Po spędzeniu kolejnych cennych minut na znalezienie miejsca w którym znajdują się opcje programu w aplikacji Expression Web i kliknięciu tego czego szukałem ukazało mi się okno dialogowe. Okno dialogowe jest tak 'rozbudowane', że dłużej zajęło mi jego znalezienie jak przeczytanie wszystkich możliwych opcji jakie można skonfigurować. Opcje tego programu uniemożliwiają skonfigurowanie czegokolwiek co miałoby praktyczne przełożenie na komfort pracy. W programie Expression Web nie można ustawić nawet skrótów klawiszowych. Jak nie trudno się domyślić możliwości konfiguracji wtyczki do zarządzania systemem kontroli wersji również tam nie ma.

Podpowiadanie składni PHP (Intellisense)

Nie ma systemu kontroli wersji? Trudno... może jest intellisense, czyli mechanizm podpowiadający składnię funkcji dostępnych w projekcie. Otwieram pierwszy plik z kodem źródłowym - na ekranie ukazuje się plik w trybie Design, jednak mnie on nie interesuje na chwilę obecną więc przełączam się do trybu Code. Na ekranie ukazuje mi się skromny kod:
<?php
require("settings.php");
require($GLOBALS["root_dir"]."!system/init.php");

kernel()->run("index.php");
?>
W powyższym kodzie ustawiłem się na funkcji require i sprawdzam czy intellisense podpowie mi argumenty tej funkcji. Wcisnąłem kombinację klawiszy CTRL+SHIFT+SPACJA i moim oczom ukazała się deklaracja funkcji. Jak na taką serię porażek można powiedzieć, że w końcu mamy jakąś dobrą wiadomość.

Nadszedł czas na prawdziwą próbę działania mechanizmu podpowiadającego składnię. Ustawiam się na funkcji kernel() powyższego kodu, wciskam wcześniej wspomnianą kombinację klawiszy i... nic się nie dzieje. 'Spróbujmy więc z metodą run :)' - myślę sobie. Wciskam kombinację klawiszy i ... bing! Z głośników wydobył się dźwięk niepowodzenia informujący, że intellisense nic nie wie o tym zapisie. Czy można więc uznać, że ten produkt posiada intellisense? W moim przekonaniu nie, bowiem nie wspiera podpowiedzi dla kodu, który sami napisaliśmy. A co z działaniem intellisense w Expression Web gdy cały kod znajduje się w jednym pliku? Moją ciekawość zaspokoił następujący kod:
<?
function funkcja($argument)
{
}

funkcja();

?>
Intellisense programu Expression Web nie potrafi podpowiedzieć, że posiadamy w skrypcie funkcję o nazwie funkcja.

Wyszukiwanie plików

Skoro nie działa intellisense to może wyszukiwanie będzie jakoś działało? Wciskam kombinację klawiszy CTRL+SHIFT+F znaną ze środowiska Microsoft Visual C++ i... nic się nie dzieje! Genialny produkt. Wspomniana kombinacja klawiszy w programie Microsoft Visual C++ umożliwiała przeszukanie wszystkich plików w projekcie - tymczasem tu nie dość, że nie da się określić plików należących do projektu to jeszcze nie wywołuje się okienko wyszukiwania! Skoro skrót klawiszowy nie działa postanowiłem zobaczyć co jest w menu edycji - tam też znalazłem możliwość wyszukiwania plików ale tylko i wyłącznie przy pomocy kombinacji CTRL+F, która w Visual C++ uruchamia wyszukiwanie w otwartym pliku.

Po ukazaniu się okna dialogowego wyszukiwania zaczęła się jego analiza i testowanie. Pierwsza próba wyszukiwania jak również kolejne zakończyły się niepowodzeniem. Próbowałem wyszukać wystąpień wyrazu kernel, który występuje w moim projekcie w wielu miejscach. Wyniki wyszukiwania były puste. Poziom irracjonalizmu występujący w tej aplikacji przekroczył dla mnie wszelkie wyobrażenia. Niemniej jednak moja dociekliwość nie dawała mi spokoju czemu nie otrzymuję wyników wyszukiwania. W dialogu wyszukiwania na ostatniej pozycji znajduje się checkbox zatytułowany "Find in source code". Zaznaczyłem wspomnianą opcję i spróbowałem wyszukać ponownie - w końcu jakiś sukces! Program znalazł wystąpienia zadanej frazy w plikach należących do projektu (czyli katalogu który wskazaliśmy jako miejsce projektu).

Wyniki wyszukiwania

Wyniki wyszukiwania zadanej frazy pojawiają się w postaci panelu. W panelu tym znajduje się ładna graficznie lista plików w których znaleziono dopasowania oraz wiersze, które zostały dopasowane. W dopasowaniach zaznaczona jest kolorem znaleziona fraza. W tym miejscu muszę przyznać, że wyniki wyszukiwania prezentują się znacznie lepiej niż w aplikacji Microsoft Visual C++ 2008. Po dwukrotnym kliknięciu elementu na liście wynikowej otwiera nam się plik na wierszu w którym występuje szukana fraza. Fraza ta się wyróżnia, bowiem jest od razu zaznaczana w edytorze kodu źródłowego programu Expression Web.

Tryb Design View

Tryb Design View jest praktycznie rzecz biorąc martwy. Otwierając wspomniany na początku kod strony napisany w PHP otrzymuję biały ekran, gdzie w normalnym przypadku powinna pokazać się zawartość strony.

Uruchomienie projektu

Kolejną drogą przez mękę jest uruchomienie projektu. Znalezienie opcji do konfiguracji środowiska tak aby stronę dało się uruchomić graniczy z cudem. Po 20min klikania i czytania różnych opcji programu udało mi się ustawić aplikację by korzystała z serwera apache na której na co dzień testuję wytwarzane projekty webowe. Aby ustawić adres serwera pod którym zawartość strony jest umieszczona należy wybrać w menu pozycję Site, a następnie wybrać Site settings.... W oknie dialogowym należy wybrać zakładkę Preview w której trzeba zaznaczyć opcję 'Preview using custom URL for this website', a następnie podać adres serwera na którym umieszczone są pliki strony, którą chcemy rozwijać. Warto w tym miejscu wspomnieć, że podaje się URL katalogu głównego rozwijanego projektu.

Jeżeli nie przestawimy wspomnianej opcji uruchamiania projektu to wówczas aplikacja Expression Web uruchomi własny serwer, który nie wspiera języka skryptowego PHP.

Uruchamianie strony

Stronę można 'szybko' uruchomić poprzez wciśnięcie klawisza F12. Klawisz ten uważam za mocno wydumany z prostego powodu - w aplikacji Visual C++ do kompilacji i uruchomienia projektu służy klawisz F5. To samo dotyczy platformy Microsoft .NET np. języka C#. Inne środowiska do programowania stosują skrót klawiszowy F9. Jak już wspomniałem we wcześniejszej części niniejszego artykułu skrótów klawiszowych nie da się zmienić, więc jesteśmy skazani na coraz to głupsze pomysły firmy Microsoft. Drugą sprawą jest owa szybkość uruchamiania - nie jest to bowiem uruchomienie tworzonego serwisu, który byłby osadzony w środowisko, a wręcz przeciwnie - otwiera się przeglądarka Internetowa Internet Explorer. Czy rozwiązanie takie jest korzystne? Można się spierać - w końcu skoro dostarcza się teoretycznie kompleksowy system do wytwarzania stron www to takim powinien też być, a tak nie jest.

Debugowanie strony

Tworząc strony w PHP przydałby się czasami sprawny Debugger. Dopisywanie do kodu print-ów w celu wyświetlenia stanów poszczególnych zmiennych nie należy do najwygodniejszych w szczególności gdy wytwarzamy formularze. Tej funkcjonalności również program nie posiada.

Podsumowanie

Po krótkim zapoznaniu się z niniejszym artykułem myślę, że moją opinię na temat produktu Microsoft Expression Web 4 już znasz. Patrząc na produkt Expression Web z punktu widzenia dewelopera webowego PHP wspomniana aplikacja jest w praktyce edytorem tekstowym posiadającym kolorowanie składni. Wszystko to mamy za jedyne 149 dolarów w wersji Professional. W tym też miejscu pozwolę sobie zakończyć artykuł na temat produktu Expression Web 4 firmy Microsoft.