Skip to content

Instantly share code, notes, and snippets.

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()
# od -t x1 hb.txt
0000000 fa f8 00 01 01 00 00 00
0000010
<?php
namespace company\project\tests\units;
use
atoum,
company\project
;
class workflow extends atoum
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…)
<?php
namespace disneyland;
class client
{
private $age = 0;
private $children = 0;
private $isFirm = false;

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 :

@mageekguy
mageekguy / gist:10017715
Last active August 29, 2015 13:58
Using collection to find a table in a database and throwing an exception if the table already exists.
$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 . '\''); })
;
@mageekguy
mageekguy / gist:11062796
Last active August 29, 2015 14:00
A client, a barman, an order, and some beer!
<?php
class drink
{
private $alcool = '';
private $pourcent = 0;
public function __construct($alcool, $pourcent)
{
$this
@mageekguy
mageekguy / gist:11062841
Last active August 29, 2015 14:00
Calisthenics version of a client, a barman, an order and some beer!
<?php
class drink
{
private $alcool = '';
private $pourcent = 0;
public function __construct($alcool, $pourcent)
{
$this->fill($alcool, $pourcent);
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);
}
);
}
);