Zend Certified Engineer


Udało się, zdałem test :) Nie oznacza to, że skończyła się seria notatek ze Study Guide, podzielę się jeszcze notatkami z ważniejszych działów. A teraz wrażenia z egzaminu. Egzamin trwa 90 minut, w całości jest w języku angielskim i składa się z 70 pytań. Są pytania jednokrotnego wyboru, wielokrotnego wyboru (zaznaczone jest ile odpowiedzi należy zaznaczyć) i pytania w których odpowiedź należy wpisać (np. nazwa konkretnej funkcji lub wynik podanego kawałka kodu).

Zanim podejdziecie do testu Zenda musicie dokładnie odświeżyć wiedzę, nie ma lekko, pytania są bardzo szczegółowe, więc nie ma co liczyć na szczęście. Na pewno warto wykupić kilka testów php|architect, znajdziecie je na stronie Zenda. Ja rozwiązałem 5 takich testów, pytania są na podobnym poziomie do tych z testu , choć składaniałbym się do stwierdzenie, że na egzaminie są pytania porównywalne z tymi trudniejszymi z php|architect.

Moje porady dla planujących podejście do : powtórzyć dokładnie obiektówkę, interface’y, klasy abstrakcyjne, dziedziczenie, instanceof powinniście mieć w małym paluszku. Funkcje operujące na stringach i tablicach trzeba znać wszystkie! Mało tego, należy znać je bardzo dokładnie, wraz z listą parametrów i efektem użycia ich w najróżniejszych kombinacjach. Do tego trzeba dorzucić takie tematy jak bezpieczeństwo, bazy danych (głównie PDO i mysqli), XML i podstawy, które wcale nie są najłatwiejsze (operatory binarne, liczby zapisane w różnych systemach, kolejność wykonywania funkcji i operatorów itp.).

Łatwo nie ma, trzeba dużo powtórzyć (lub douczyć się), wgryźć się w szczegóły. Czy warto zdawać? Raczej tak, w momencie w którym zostałem dodany do Yellow Pages Zenda, byłem 63 Polakiem z tym certyfikatem. Kilka godzin po dodaniu wpisu o w profilu na Goldenline, dostałem ciekawą ofertę pracy (w Brukseli) od headhuntera (kolega z również ją dostał, a kolega bez nie dostał, więc chyba było to jakimś kryterium). Na całym świecie jest tylko 4000 certyfikowanych () osób. Koszt egzaminu nie jest jakiś wielki (poniżej 400 złotych), a sądzę że każdy pracodawca chętnie go pokryje. Pozostaje mi tylko życzyć powodzenia, bo skoro doczytałeś do końca ten wpis, to pewnie przymierzasz się do testu Zenda.

9 komentarzy styczeń 21st, 2009

ZCE: Arrays

W kolejnej części notatek z Study Guide przedstawię notatki z działu “Arrays”. to szerokie zagadnienie w PHP, a umiejętne korzystanie z nich daje nam wielkie możliwości. Na początek zrobimy dodawanie dwóch tablic z użyciem operatora + i funkcji array_merge:

$a = array (1, 2, 'a' => 3, 'b' => 4);
$b = array (1, 3, 'b' => 3);
$a + $b; // Array ( [0] => 1 [1] => 2 [a] => 3 [b] => 4 ) 
$b + $a; // Array ( [0] => 1 [1] => 3 [b] => 3 [a] => 3 ) 
array_merge($a, $b); // Array ( [0] => 1 [1] => 2 [a] => 3 [b] => 3 [2] => 1 [3] => 3 ) 
array_merge($b, $a); // Array ( [0] => 1 [1] => 3 [b] => 4 [2] => 1 [3] => 2 [a] => 3 )

Jak widać dodawanie tablic nie jest przemienne. Operator + sprawdza dodawane po kluczach (również numerycznych), do elementów pierwszej tablicy dodaje wszystkie elementy drugiej tablicy, które mają inne klucze. Dla tych samych kluczy zostają wartości z pierwszej tablicy.
Funkcja array_merge ignoruje klucze numeryczne, dodając wszystkie elementy o kluczach numerycznych z obu tablic. Dla pozostałych kluczy, jeśli klucze są takie same, ustawia wartości z drugiej tablicy.

Teraz coś podchwytliwego, konstrukcja foreach z użyciem referencji, bywa przydatne, ale też niebezpieczne.

$a = array ('zero', 'one', 'two');
foreach ($a as &$value) {}
foreach ($a as $value) {}

Wydaje się, że obie iteracje nic nie robią i że nasza tablica nie uległa zmianie, jednak kiedy wyświetlimy zawartość tablicy zobaczymy:

Array
(
    [0] => zero
    [1] => one
    [2] => one
)

Jak to możliwe? Po zakończeniu pierwszej pętli zmienna $value jest referencją do elementu $a[2]. Druga pętla z każdą iteracją zmienia wartość tego elementu, tak więc najpierw wpisuje do $a[2] wartość ‘zero’ z $a[0], następnie pobiera wartość z $a[1], więc teraz $a[2] zawiera ‘one’. W ostatniej pętli do $a[2] podstawiana jest wartość z $a[2], gdzie mamy ‘one’.

Nie będę przepisywał wszystkich funkcji do działań na tablicach bo jest ich za dużo, zresztą możecie je znaleźć ładnie opisane w dokumentacji. Opiszę jeszcze tylko funkcje array_walk i array_walk_recursive, które bywają bardzo przydatne, a mogą być Wam nieznane. Obie służą do wykonywania działań na elementach tablicy z użyciem zdefiniowanej wcześniej funkcji, przy czym array_walk_recursive działa rekurencyjnie, więc wykonuje działania również w tablicach zagnieżdżonych. Przykład:

function changeVal (&$value, &$key)
{
   $value = $value * 10;
}
 
$a = array(1, 3, 5);
$b = array(1, 2, 3, array(4, 5, 6));
array_walk($a, 'changeVal'); // Array ( [0] => 10 [1] => 30 [2] => 50 ) 
array_walk_recursive($b, 'changeVal'); // Array ( [0] => 10 [1] => 20 [2] => 30 [3] => Array ( [0] => 40 [1] => 50 [2] => 60 ) )

Użycie funkcji array_walk na tablicy wielowymiarowej zaowocuje fatal errorem.

Skomentuj styczeń 10th, 2009

Poprzedni wpis


Kalendarz

luty 2012
P W Ś C P S N
« stycznia    
 12345
6789101112
13141516171819
20212223242526
272829  

Starsze wpisy

Kategorie