Niezalogowany [ logowanie ]
Subskrybuj kanał ATOM Kanał ATOM

Autor wpisu: Śpiechu, dodany: 09.08.2011 23:25, tagi: php

W dzisiejszym odcinku weźmie udział „najwspanialszy z kiedykolwiek stworzonych silnik do walidacji danych w PHP” — Validation. Projekt rozwija groźnie brzmiąca grupa programistów o nazwie Respect z Brazylii. Mam nadzieję, że po tym wpisie nie wyląduję w lesie wyciągnięty z bagażnika jakiegoś starego Mercedesa…

Projekt spełnia normy, które są oczywiste przy czytaniu kodu takich gigantów jak Zend Framework 2 czy Symfony, a więc używanie namespaces, drzewiasta struktura klas i katalogów, kompatybilność ze standardowym autoloaderem klas SplClassLoader, własne rozszerzenia wyjątków. Jedyny zgrzyt to poziom dokumentacji. Automat raczej nie da rady w pełni wygenerować typów parametrów metod i zwracanych wartości. W nagrodę za to dostępnych jest dziesiątki testów jednostkowych. Co jak co, ale walidator sprawdzający czyjeś dane sam powinien być gruntownie sprawdzony ;-)

Powszechnie wiadomo, że w PHP nie można użyć konstrukcji typu

new Obiekt()->metoda();

Zamiast tego można stosować metody statyczne, które w rezultacie zwrócą nam obiekt lub też można zastosować tak lubianego przez was Harrego Pottera. Twórcy biblioteki czarują często i gęsto.

Autorzy Validation proponują używanie w następujący sposób:

// deklarujemy uzywany namespace i robimy alias do klasy Validator
use Respect\Validation\Validator as v;
 
// mozemy albo najpierw przygotowac obiekt walidatora
$walidator = v::string()->between('a', 'c');
 
// albo tez bezposrednio uzywac w instrukcjach warunkowych, np.
if (v::numeric()->positive()->validate($cos)) echo 'prawda';
 
//i potem uzywac do sprawdzania jednej z trzech metod:
 
// zwroci tylko true albo false
$walidator->validate($cos);
 
// wypluje wyjatek z pierwszym bledem
$walidator->check($cos);
 
// wypluje wyjatek ze wszystkimi bledami
$walidator->assert($cos);

Warunków, które możemy sprawdzać jest kilkadziesiąt. Można popatrzeć po plikach. Z ciekawszych to wymieniony wyżej

between()

dla zakresu znaków,

in(array('wartosc1' , 'wartosc2))

dla dozwolonych wartości oraz konstrukcja

v::each(v::warunek())->validate(array('wartosc1','wartosc2'));

dla sprawdzenia wszystkich wartości w tablicy. Ponadto można tworzyć kompozyty różnych warunków za pomocą

v::allOf($walidator1,$walidator2);

(jeżeli wszystkie muszą przejść) oraz

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

Autor wpisu: Tomasz Kowalczyk, dodany: 09.08.2011 23:24, tagi: php

Każdy z nas traktuje język HTML jako proste oraz dobrze znane narzędzie. Okazuje się, że i on kryje jednak interesujące zakamarki, które mogą zaciekawić potencjalnego programistę stron internetowych. O ile nie są to jakieś krytyczne dla działania strony kwestie, o tyle czasem można wykorzystać te informacje do stworzenia jeszcze bardziej ambitnych rozwiązań. W dzisiejszym wpisie [...]

Autor wpisu: singles, dodany: 09.08.2011 20:26, tagi: php, zend_framework

W dzisiejszym odcinku cyklu ZendFramework Quick Tip zajmiemy się wyjaśnieniem fenomenu parametrów, które „biorą się znikąd” podczas korzystania z helpera url.

Wprowadzenie

Jak większość frameworków, ZF udostępnia helpery pomocnicze dla widoków. Jednym z takich helperów jest Zend_View_Helper_Url, który służy do tworzenia adresu URL w ramach naszej aplikacji na bazie przekazanych parametrów. Warto z niego korzystać, ponieważ rozwiązuje problem prawidłowej ścieżki bazowej, kiedy nie używamy vhostów i nasza aplikacja umieszczona jest np. w katalogu http://example.com/some/folder/public/ Przykładowe wywołanie:

<?php
 
// application/views/scripts/foo.phtml
$this->url(array('controller' => 'foo', 'action' => 'bar', 'additional_param' => 123));
 
?>

wygeneruje adres: http://example.com/foo/bar/additional_param/123/

Jednakże, kiedy z poziomu www. strony spróbujemy wygenerować inny adres, np. tylko do kontrolera odpowiedzialnego za zarządzanie użytkownikami:

<?php
$this->url(array('controller' => 'users'))
?>

zamiast adresu http://example.com/users otrzymamy http://example.com/users/bar/additional_param/123/

Ale dlaczego?

Otóż to, aby zrozumieć działanie wystarczy spojrzeć na implementację helpera:

class Zend_View_Helper_Url extends Zend_View_Helper_Abstract
{
    public function url(array $urlOptions = array(), $name = null, $reset = false, $encode = true)
    {
        $router = Zend_Controller_Front::getInstance()->getRouter();
        return $router->assemble($urlOptions, $name, $reset, $encode);
    }
}

Pomijając pobieranie obiektu routera z kosmosu, najważniejsze są dla nas parametry, a konkretniej trzeci z nich: $reset. Odpowiada on za zresetowanie obecnie ustawionych parametrów ścieżki. Jak widać, jego domyślną wartością jest false – i to jest powód, dla którego w przedstawionym wcześniej przykładzie otrzymaliśmy dodatkowe parametry.

Rozwiązanie

Jak łatwo się domyślić, rozwiązanie jest bardzo proste – wywołanie powinno wyglądać tak:

$this->url(array('controller' => 'users'), null, true);

Oczywiście, pisanie wielu takich wywołań może być dla niektórych niewygodne. Dlatego możemy albo napisać własny helper, gdzie domyślnie ustawimy parametr na true.

Innym rozwiązaniem może być stworzenie helpera Zend_View_Helper_Url i umieszczenie go w pliku APPLICATION_PATH . /views/helpers/Url.php:

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

Autor wpisu: batman, dodany: 09.08.2011 12:00, tagi: css

Dzisiejszym wpisem rozpoczynam serię, w której będę się dzielił z Wami odkryciami, publikowanymi przeze mnie na Twitterze. Dzisiaj skupię się na CSS.

  1. One line CSS Grid Framework – ile można zmieścić w jednym wierszu? Okazuje się, że bardzo wiele. Najlepszym przykładem jest tutaj One line CSS Grid Framework, który przy pomocy kilkudziesięciu znaków pozwoli zbudować wielokolumnowy layout.
  2. Compass – framework CSS rozszerzający możliwości Sass o predefiniowane mixin dostarczające gotowe rozwiązania dla typografii, stylowania elementów strony, restowania CSS.
  3. CSS3 Transitions Without Using :hover – efekty przejść zastosowane dla innych niż :hover pseudo-klas. Dużo kodu, a do każdego demo.
  4. The future of CSS layouts – głębokie spojrzenie na layouty tworzone przy użyciu CSS. Wiele przykładów opisujących takie możliwości CSS jak flexbox, grid, pozycjonowane floaty czy regiony.
  5. CSS3 Bling in the Real World – artykuł o CSS3, przyszłości tej technologii, jej możliwościach oraz stanie bieżącym.

Autor wpisu: Tomasz Kowalczyk, dodany: 08.08.2011 21:11, tagi: jquery

Pomimo upływu czasu i wielu zmian w środowiskach programistów stron internetowych, biblioteka jQuery zdaje się być cały czas najpopularniejszym rozwiązaniem ułatwiającym ich pracę. Mimo okrzyknięcia tej biblioteki "PHP4 JavaScriptu", na pewno można się w niej doszukać wielu pozytywnych aspektów. W dzisiejszym Linkdumpie chciałbym po raz kolejny przedstawić kilka rzeczy pozwalających na odzyskanie wiary w jQuery. [...]

Autor wpisu: Wojciech Sznapka, dodany: 07.08.2011 19:29, tagi: php, symfony, symfony2

On July 28th Symfony2 was finally released, with launch parties all over the world. Developers are excited, managers are excited and whole echosystem is happy. They’re right, there are plenty of reasons to be optimistic. symfony 1.x is a great framework, I made many  projects with it, nevertheless Symfony2 is a new way of doing [...]

Autor wpisu: Michal Wachowski, dodany: 06.08.2011 01:13, tagi: javascript, php

Własne projekty to fajna rzecz, można robić kiedy się chce, ile się chce i jak się chce. Czasem coś z tego wychodzi. To jeden z takich projektów.
Wszystkie wpisy należą do ich twórców. PHP.pl nie ponosi odpowiedzialności za treść wpisów.