Skip to content

Instantly share code, notes, and snippets.

View gist:9189509
<?php
trait class ABetterNameHere
{
public function someGenericMethod()
{
// ...
}
}
View README.md

Related tickets:

Definitions

  • Class
  • Factory
  • Value
  • Alias
@mnapoli
mnapoli / example.php
Last active August 29, 2015 14:09
PHPUnit extension
View example.php
<?php
$mock = SimpleMock::mock('My\Class', array(
'getBar' => 'hello',
'doSomething' => function ($param) {
echo 'foo';
},
));
// Same as
@mnapoli
mnapoli / README.rst
Last active August 29, 2015 14:10
Réseau BoostInLyon
View README.rst
2 Sites:
  • TLM
  • Grenette
Utilisation des Sites:
  • 20 aine de postes en RJ45
  • 20 smartphone/tablette
  • Quelques utilisateurs wifi

Materiel:

View Cache.php
<?php
interface Cache
{
public function get($id);
public function set($id, $value);
}
View example1.php
<?php
$factory = function () {
return new Foo();
}
$factory = function () use ($factory) {
$object = $factory();
$object->setOption('Hello');
@mnapoli
mnapoli / README.md
Last active August 29, 2015 14:18
Extending definitions in PHP-DI 5
View README.md

Extending definitions in PHP-DI 5

Arrays

Extend: definition

  • DI\add()
// Declare an array
@mnapoli
mnapoli / README.md
Last active August 29, 2015 14:18
Réflexions PHP-DI 5
View README.md

PHP-DI 4

Dans la v4 on déclare un objet avec DI\object(). Automatiquement ça va étendre toute précédente définition, par exemple si on a plusieurs fichiers de config, mais surtout pour l'autowiring (ou les annotations si elles sont utilisées).

Du coup avec DI\object()->constructorParameter('paramName', 'the value') on peut "compléter" la définition autowiring sans avoir à redéclarer tous les paramètres qui sont déjà automatiquement résolus avec les type-hints.

PHP-DI 5

Dans la v5 il y'aura beaucoup plus de fonctionnalités orientées au applications modulaires, donc avec plein de fichiers de config qui peuvent se surcharger, etc. (comme les bundles Symfony)

@mnapoli
mnapoli / README.md
Last active August 29, 2015 14:18
PHP-DI object definitions
View README.md
interface MoneyStorage {
}
class BankAccount implements MoneyStorage {
    public function __construct(Logger $logger, $account) ...
}
return [
View README.md

Nouveau projet :

  • pour la boite : le projet appartient à la boite (c'est elle qui décide de la license)
  • perso : pas sur son temps de travail ;) (sauf si accord bien sur)

Si exception (par ex. la boite veut pas spécialement maintenir un projet) -> accord de la boite pour que tu bosse dessus et que le projet t'appartienne.

Contribution à un projet existant :

Toute contribution est soumise à la license du projet auquel on contribue. Donc si la boite est d'accord sur ce principe y'a pas de différence si c'est un projet perso ou 3rd party (Symfony, etc.).