Ein kleines Code-Snippet mit dem ich die Funktionsweise von einem Promise versucht habe zu erklären.
let key = "blubb";
function get(resolve, reject){
resolve({blubb: (new Date()).getUTCDate()});
};
(new Promise(get)).then(data => data[key]).then(val => console.log(val));
Die Frage war: Wie bekomme ich Daten in eine function für then(), wenn ich doch nur ein Argument übergeben bekomme?
So denkt man in JavaScript aber garnicht.... man muss, wie in dem Beispiel, key garnicht als Argument mit rein reichen.
Wenn eine function ein weiteres Promise zurück liefert, bezieht sich das darauf folgende then() auf die Rückgabe dieses Promises.. an sich logisch :-)
Mal ein kleines Beispiel wie man Closures im
Zend Framework 2 zusammen mit dem TableGateway verwendet.
Die meisten Beispiele nutzen leider nicht die Möglichkeit Objekte in der Function zu nutzen, die außerhalb erzeugt wurden. Dabei ist das eigentlich ja das spannende daran und nur ein "Order By" ist ja in den seltensten Fällen allein was man möchte.
Also hier ein kleines Beispiel, um direkt dazu zu kommen. Man achte auf das Schlüsselwort use.
if($test!=null && $test->getId()>0){
$rset = $this->select(
function (Select $select) use ($test) {
$select->where->equalTo('test_id',$category->getId());
$select->where->lessThan('test_date','CURRENT_DATETIME');
$select->order('test_date DESC')->limit(20,0);
}
);
}
Die Klasse leitet von TableGateway ab. Deswegen $this->select().