Wpis z mikrobloga

To chyba najbardziej prymitywna jaka może być implementacja Event Sourcingu w PHP:

<?php

$events = [
'init' => function($a, &$r) {$r = $a;},
'add' => function($a, &$r) {$r += $a;},
'subtract' => function($a, &$r) {$r -= $a;},
];
$store = [
['init', 0],
['add', 1],
['add', 2],
['subtract', 5],
//...
];
file_put_contents('store.ser', serialize($store));

$store = unserialize(file_get_contents('store.ser'));
$result = null;
foreach ($store as $array)
{
$name = $array[0];
$value = $array[1];
$callback = $events[$name];
$params = [$value, &$result];
call_user_func_array($callback, $params);
}
var_dump($result);

A ja myślałem że Event Sourcing można zastosować tylko w takich frameworkach jak #symfony albo #laravel a to można zastosować w zasadzie w dowolnym kodzie w PHP. Moje pytanie jest takie, gdzie to może mieć praktyczne zastosowanie?

#php #programowanie #programista15k #eventsourcing
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Moje pytanie jest takie, gdzie to może mieć praktyczne zastosowanie?


@daro1: wskazany przykład? Np. w PHP Object Injection. Szczególnie w użyciu z pobieraniem danych z użyciem zewnętrznego źródła, takiego jak filegetcontents. Polecam jednak użyć Jsona.

Skoro wspomniałeś Laravel, to idąc tym tokiem można wskazać kolejki jako miejsce, w którym można z takiego rozwiązania (bezpiecznej wersji) korzystać - czyli wykonywać kod już poza udziałem samego requesta/usera. Szczególnie, że teraz
  • Odpowiedz
Event Sourcing można zastosować tylko w takich frameworkach


@daro1: framework nie ma tu absolutnie nic do rzeczy

event sourcing nadaje się do trackowania częstych zmian elementów Twojej domeny - możesz odbudować na nowo obiekt nakładając na niego naniesione zdarzenia. produktem tego jest w pełni wiarygodny audyt działania twojego systemu. ofc jest to zasobożerne, więc co jakiś czas zapisujesz snapshot encji po iluś nałożonych
  • Odpowiedz