Archive for January, 2010
cakephp {n}
Jeśli zastanawiasz się dlaczego do czego służy znacznik {n} czasem przekazywany w parametrach funkcji – służę pomocą.
Otóż jest on używany w meotdzie Set::extract() (1.1) lub Set::classicExtract() i oznacza “iteruj po kolejnych elementach”.
Możesz się tą metodą pobawić samodzielnie, załóżmy taką tablicę:
$a = array(
array("X" => "ala"),
array("X" => "ma"),
array("X" => "kota"),
);
innymi słowy:
Array
(
[0] => Array
(
[X] => ala
)
[1] => Array
(
[X] => ma
)
[2] => Array
(
[X] => kota
)
)
I chcesz zwykłą listę, to możesz skorzystać z Set::classicExtract():
Set::classicExtract($a, "{n}.X")
i w efekcie masz:
Array
(
[0] => ala
[1] => ma
[2] => kota
)
Dokładnie tak działał stary (1.1) Model::generatelist().
Inne ciekawe zastosowanie klasy Set znajdziesz w moim starszym poście.
Gdybym zatrudniał programistę…
Jedno z pytań jakie musiałbym zadać byłoby następujące:
Dane są dwie metody w klasie. Kod prawidłowo się parsuje i wykonuje. Jednak zawierają one pewien błąd. Czy jesteś w stanie go znaleźć?
function archive_lists() {
$this->layout='admin';
$user=$this->Auth->user();
$userId = $user['User']['id'];
$entry = $this->Car->Entry->User->find('first' ,
array(
'conditions'=>array('User.id'=>$userId),
'contain'=>array('Entry')
)
);
$entryId = $entry['Entry']['0']['id'];
$entry_name = $this->Car->find('first' , array('conditions'=>array('Car.entry_id'=>$entryId)));
$this->set('entry_name' , $entry_name['Entry']['name']);
$this->Car->recursive = 0;
$data = $this->paginate('Car', array('Car.entry_id' => $entryId, 'Car.deleted'=>1));
$this->set('cars', $data);
}
function index_archive() {
$this->layout='admin';
$this->Car->recursive = 0;
$data = $this->paginate('Car', array('Car.deleted'=>1));
$this->set('cars', $data);
}
Jestem pewien, że gdybym miał dwóch kandydatów: jednego z dwuletnim doświadczeniem w pracy z PHP i frameworkiem CakePHP i drugiego po studiach informatycznych (czyli pewnie nieźle zna C
), ale tylko widział PHP. Gdyby pierwszy nie był w stanie odpowiedzieć poprawnie na moje pytanie w przeciągu kilku minut, a drugi wręcz przeciwnie – wybrałbym drugiego.
Byłbym wniebowzięty, gdyby go znalazł po kilku chwilach patrzenia na kod. Oznaczało by to, że nie jest rzemieślnikiem, który nauczył się korzystać z narzędzi oferowanych przez język. Byłby żółtodziobem, który ma potencjał do tworzenia świetnych systemów. Ma predyspozycję do szybkiego wzrostu umiejętności niezależnie od tego, czy jeździ na kosztowne szkolenia, czy nie. Po prostu “małe dziadostwa” w kodzie przeszkadzałyby mu na tyle, że z własnej nieprzymuszonej woli nauczyłby się ich unikach. Odkrywałby kolejne i doszlifowywał swoje umiejętności. Nie raz na jakiś czas, ale ustawicznie!
Całkiem skomplikowana strona internetowa za 1000 złotych
Zaczęło się na wykopie. Jerzy Łabuda, ekspert (a niektórzy twierdzą, że “ekspert”) Komputer Świata twierdzi, że na zaprojektowanie, stworzenie i wdrożenie “całkiem skomplikowanej strony internetowej¹” wystarczy 1000zł.
¹. Pomijam kwestię tej nieprecyzyjnej definicji.
Moim zdaniem ma rację. Jednak Ci, którzy chcieliby z tej okazji skorzystać mogą się zdziwić. Kiedy przejdą się ze swoją propozycją po firmach to będą zaskoczeni, że nikt nie chce podać takiej ceny. Dlatego specjalnie dla nich podaję przepis na taką aplikację…