2010-05-24 35 views

Répondre

1

C'est le premier exemple que je pouvais penser, ce n'est pas grand mais il vous donne une idée:

$db = new Database(); 
$filteredList = $db->select() 
      ->from('my_table') 
      ->where('id', 9) 
      ->run() 
      ->filter(function($record){ 
      // apply some php code to filter records 
     }); 

Là, je » d utiliser des interfaces fluides pour interroger ma base de données en utilisant des ORM, puis appliquer un filtre au jeu d'enregistrements obtenu. Imaginez la méthode run() retourne un objet RecordSet qui a une méthode filter() qui pourrait être quelque chose comme ceci:

public function filter ($callback) 
{ 
    return array_filter($this->recordSet, $callback); 
} 

Avez-vous l'idée?

+0

Pourriez-vous également donner un exemple spécifique de fermeture imbriquée avec des objets? Dans le lien fourni par l'affiche originale la réponse acceptée donne l'exemple suivant pour éviter mort fin 'base de données .ConnectionString (cs => cs.User (« nom »); .pass (« xxx ») .Timeout (100); ' Comment le feriez-vous en PHP? Pour autant que j'ai essayé, vous ne pouvez pas imiter cette construction en PHP – qrazi

+0

Je ne suis pas sûr si je comprends le problème ou comment est-il résolu en Java. Cependant, je suis sûr qu'il y a un moyen de contourner cela en PHP (bien que cela puisse différer de la façon dont cela se fait en Java). –

+0

C'est en fait C#. Je travaille sur des tests fonctionnels avec Selenium et PHPUnit, en utilisant le modèle Page Object. Je voudrais utiliser les objets de la page d'une manière fluide. Disons donc que j'ai un objet pageA et un objet pageB, tous les deux utilisent le même type de popup (pageC). Lorsque vous fermez la fenêtre contextuelle, quel objet vous renvoie? Dans l'exemple C#, vous n'avez pas à vous en soucier, à cause de la fermeture imbriquée. Dans mon exemple, cela signifierait que lorsque vous fermez la fenêtre contextuelle, vous quittez la fermeture et continuez avec pageA ou pageB. – qrazi