Skip to content

Instantly share code, notes, and snippets.

Frédéric Hardy mageekguy

View GitHub Profile
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 :

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