Instantly share code, notes, and snippets.

View gist:8688372
public function testGetTypeOf()
{
$this
->if($asserter = $this->newTestedInstance(new atoum\asserter\generator()))
->and($asserter->setLocale($locale = new \mock\mageekguy\atoum\locale()))
->then
->string($asserter->getTypeOf(true))->isEqualTo('boolean(true)')
->mock($locale)->call('_')->withArguments('boolean(%s)')->once()
->string($asserter->getTypeOf(false))->isEqualTo('boolean(false)')
->mock($locale)->call('_')->withArguments('boolean(%s)')->twice()
View gist:8824911
# od -t x1 hb.txt
0000000 fa f8 00 01 01 00 00 00
0000010
View gist:9503042
<?php
namespace company\project\tests\units;
use
atoum,
company\project
;
class workflow extends atoum
View gist:9909740
mageekguy si tu as un changement dans ta tarification, tu créés la nouvelle règle, et tu modifie l'injection de dépendance de tes régles dans ton objet pricing
mageekguy pas besoin de toucher au code de pricing
mageekguy tu as juste à créer la nouvelle règles et à faire évoluer celles utilisées par pricing
mageekguy et tu peux tout moduler comme tu veux dans tous les sens
mageekguy bien sur que l'héritage a du sens
mageekguy mais pas dans ce contexte
mageekguy c'est une solution mais ce n'est pas la meilleure en ce qui concerne la modularité du code
mageekguy ton pricing n'est rien d'autres qu'une calculatrice
mageekguy et tu peux changer les règles de calcul d'une calculatrire
mageekguy et la passer en base 64 ou sur l'ensemble des complexes (c'est fun, ça, d'ailleurs…)
View gist:9931546
<?php
namespace disneyland;
class client
{
private $age = 0;
private $children = 0;
private $isFirm = false;
View gist:9942188

Imaginons un systéme de billeterie obéissant aux rêgles suivantes :

  1. Un client peut acheter de 1 à n ticket;
  2. Un ticket est valable pour une et une seule personne;
  3. Le prix du ticket doit être 2 si la personne à moins de 4 ans, 10 si la personne à moins de 12 ans et 30 pour toute personne agée de plus de 12 ans.

Il nous est demandé de développer le code correspondant à cet ensemble de régles en obéissant aux paradigme de la programmation orientée objet.
Une implémentation possible pourrait être la suivante :

View gist:10017715
$database
->select(function($innerTable) use ($table) { return $table->getName() === $innerTable->getName(); }, 1, function() use ($table, $database) {
$database->add($table);
$table->setDatabase($database);
}
)
->apply(function($table) use ($database) { throw new database\exception('Table \'' . $table . '\' already exists in \'' . $database . '\''); })
;
View gist:11062796
<?php
class drink
{
private $alcool = '';
private $pourcent = 0;
public function __construct($alcool, $pourcent)
{
$this
View gist:11062841
<?php
class drink
{
private $alcool = '';
private $pourcent = 0;
public function __construct($alcool, $pourcent)
{
$this->fill($alcool, $pourcent);
View gist:11208900
public function apply(comparable $name, comparable $value, callable $callable)
{
$this->values->ifContains($name, function($values) use ($value, $callable) {
$values->ifContains($value, function($value) use ($callable) {
$this->objects->apply($value, function($objects) use ($callable) {
$objects->walk($callable);
}
);
}
);