PHP hook, building hooks in your application
Introduction
One of the real challenges in building any type of framework, core or application is making it possible for the developers to hook into the business logic at specific points. Since PHP is not event based, nor it works with interrupts you have to come up an alternative.
The test case
Lets assume we are the main developers of a webshop framework. Programmers can use our framework to build complete webshops. Programmers can manage the orders that are placed on the webshop with the order class. The order class is part of our framework and we don’t want it to be extended by any programmer. However we don’t want to limit to programmers in their possibilities to hook into the orders process.
For example programmers should be able to send an email to the webshopowner if an order changes from one specific delivery status to another. This functionality is not part of the default behavior in our framework and is custom for the progammers webshop implementation.
Like said before, PHP doesn’t provide interrupts or real events so we need to come up with another way to implement hooks into our application. Lets take a look at the observer pattern.
Implementing the Observer pattern
The observer pattern is a design-pattern that describes a way for objects to be notified to specific state-changes in objects of the application.
For the first implementation we can use SPL. The SPL provides in two simple objects:
SPLSubject
- attach (new observer to attach)
- detach (existing observer to detach)
- notify (notify all observers)
SPLObserver
- update (Called from the subject (i.e. when it’s value has changed).
iOrderRef = $iOrderRef;
// Get order information from the database or an other resources
$this->iStatus = Order::STATUS_SHIPPED;
}
/**
* Attach an observer
*
* @param SplObserver $oObserver
* @return void
*/
public function attach(SplObserver $oObserver)
{
$sHash = spl_object_hash($oObserver);
if (isset($this->aObservers[$sHash])) {
throw new Exception('Observer is already attached');
}
$this->aObservers[$sHash] = $oObserver;
}
/**
* Detach observer
*
* @param SplObserver $oObserver
* @return void
*/
public function detach(SplObserver $oObserver)
{
$sHash = spl_object_hash($oObserver);
if (!isset($this->aObservers[$sHash])) {
throw new Exception('Observer not attached');
}
unset($this->aObservers[$sHash]);
}
/**
* Notify the attached observers
*
* @param string $sEvent, name of the event
* @param mixed $mData, optional data that is not directly available for the observers
* @return void
*/
public function notify()
{
foreach ($this->aObservers as $oObserver) {
try {
$oObserver->update($this);
} catch(Exception $e) {
}
}
}
/**
* Add an order
*
* @param array $aOrder
* @return void
*/
public function delete()
{
$this->notify();
}
/**
* Return the order reference number
*
* @return int
*/
public function getRef()
{
return $this->iOrderRef;
}
/**
* Return the current order status
*
* @return int
*/
public function getStatus()
{
return $this->iStatus;
}
/**
* Update the order status
*/
public function updateStatus($iStatus)
{
$this->notify();
// ...
$this->iStatus = $iStatus;
// ...
$this->notify();
}
}
/**
* Order status handler, observer that sends an email to secretary
* if the status of an order changes from shipped to delivered, so the
* secratary can make a phone call to our customer to ask for his opinion about the service
*
* @package Shop
*/
class OrderStatusHandler implements SplObserver
{
/**
* Previous orderstatus
* @var int
*/
protected $iPreviousOrderStatus;
/**
* Current orderstatus
* @var int
*/
protected $iCurrentOrderStatus;
/**
* Update, called by the observable object order
*
* @param Observable_Interface $oSubject
* @param string $sEvent
* @param mixed $mData
* @return void
*/
public function update(SplSubject $oSubject)
{
if(!$oSubject instanceof Order) {
return;
}
if(is_null($this->iPreviousOrderStatus)) {
$this->iPreviousOrderStatus = $oSubject->getStatus();
} else {
$this->iCurrentOrderStatus = $oSubject->getStatus();
if($this->iPreviousOrderStatus === Order::STATUS_SHIPPED && $this->iCurrentOrderStatus === Order::STATUS_DELIVERED) {
$sSubject = sprintf('Order number %d is shipped', $oSubject->getRef());
//mail('secratary@example.com', 'Order number %d is shipped', 'Text');
echo 'Mail sended to the secratary to help her remember to call our customer for a survey.';
}
}
}
}
$oOrder = new Order(26012011);
$oOrder->attach(new OrderStatusHandler());
$oOrder->updateStatus(Order::STATUS_DELIVERED);
$oOrder->delete();
?>
There are several problems with the implementation above. To most important disadvantage is that we have only one update method in our observer. In this update method we don’t know when and why we are getting notified, just that something happened. We should keep track of everything that happens in the subject. (Or use debug_backtrace… just joking, don’t even think about using it that way ever!).
Taking it a step further, events
Lets take a look at the next example, we will extend the Observer implementation with some an additional parameter for the eventname that occured.
Finishing up, optional data
iOrderRef = $iOrderRef;
// Get order information from the database or something else...
$this->iStatus = Order::STATUS_SHIPPED;
}
/**
* Attach an observer
*
* @param Observer_Interface $oObserver
* @return void
*/
public function attachObserver(Observer_Interface $oObserver)
{
$sHash = spl_object_hash($oObserver);
if (isset($this->aObservers[$sHash])) {
throw new Exception('Observer is already attached');
}
$this->aObservers[$sHash] = $oObserver;
}
/**
* Detach observer
*
* @param Observer_Interface $oObserver
* @return void
*/
public function detachObserver(Observer_Interface $oObserver)
{
$sHash = spl_object_hash($oObserver);
if (!isset($this->aObservers[$sHash])) {
throw new Exception('Observer not attached');
}
unset($this->aObservers[$sHash]);
}
/**
* Notify the attached observers
*
* @param string $sEvent, name of the event
* @param mixed $mData, optional data that is not directly available for the observers
* @return void
*/
public function notifyObserver($sEvent, $mData=null)
{
foreach ($this->aObservers as $oObserver) {
try {
$oObserver->update($this, $sEvent, $mData);
} catch(Exception $e) {
}
}
}
/**
* Add an order
*
* @param array $aOrder
* @return void
*/
public function add($aOrder = array())
{
$this->notifyObserver('onAdd');
}
/**
* Return the order reference number
*
* @return int
*/
public function getRef()
{
return $this->iOrderRef;
}
/**
* Return the current order status
*
* @return int
*/
public function getStatus()
{
return $this->iStatus;
}
/**
* Update the order status
*/
public function updateStatus($iStatus)
{
$this->notifyObserver('onBeforeUpdateStatus');
// ...
$this->iStatus = $iStatus;
// ...
$this->notifyObserver('onAfterUpdateStatus');
}
}
/**
* Order status handler, observer that sends an email to secretary
* if the status of an order changes from shipped to delivered, so the
* secratary can make a phone call to our customer to ask for his opinion about the service
*
* @package Shop
*/
class OrderStatusHandler implements Observer_Interface
{
protected $iPreviousOrderStatus;
protected $iCurrentOrderStatus;
/**
* Update, called by the observable object order
*
* @param Observable_Interface $oObservable
* @param string $sEvent
* @param mixed $mData
* @return void
*/
public function update(Observable_Interface $oObservable, $sEvent, $mData=null)
{
if(!$oObservable instanceof Order) {
return;
}
switch($sEvent) {
case 'onBeforeUpdateStatus':
$this->iPreviousOrderStatus = $oObservable->getStatus();
return;
case 'onAfterUpdateStatus':
$this->iCurrentOrderStatus = $oObservable->getStatus();
if($this->iPreviousOrderStatus === Order::STATUS_SHIPPED && $this->iCurrentOrderStatus === Order::STATUS_DELIVERED) {
$sSubject = sprintf('Order number %d is shipped', $oObservable->getRef());
//mail('secratary@example.com', 'Order number %d is shipped', 'Text');
echo 'Mail sended to the secratary to help her remember to call our customer for a survey.';
}
}
}
}
$oOrder = new Order(26012011);
$oOrder->attachObserver(new OrderStatusHandler());
$oOrder->updateStatus(Order::STATUS_DELIVERED);
$oOrder->add();
?>
Now we are able to take action on different events that occur.
Disadvantages
Although this implementation works quite well there are some drawbacks. One of those drawbacks is that we need to dispatch an event in our framework, if we don’t programmers can’t hook into our application. Triggering events everywhere give us a small performance penalty however I do think this way of working gives the programmers a nice way to hook into your application on those spots that you want them to hook in.
Just for the record
Notice that this code is just an example and can still use some improvements, for example: each observer is initialized even it will maybe never be notified, therefore I suggest to make use of lazy in some cases for loading the objects. There are other systems to hook into an application, more to follow!
электрокарнизы купить в москве [url=https://karnizy-s-elektroprivodom-cena.ru]электрокарнизы купить в москве[/url] .
karnizi s elektroprivodom cena_yfkr
15 Sep 25 at 3:52 pm
квартира на сутки Лида https://gusto.gg/2025/09/10/snjat-kvartiru-na-sutki-na-ul-akademicheskaja-v/
https://gusto.gg/2025/09/10/snjat-kvartiru-na-sutki-na-ul-akademicheskaja-v/
15 Sep 25 at 3:53 pm
купить диплом в спб с занесением в реестр [url=http://whdf.ru/forum/user/105708]купить диплом в спб с занесением в реестр[/url] .
Priobresti diplom lubogo instityta!_wikt
15 Sep 25 at 3:53 pm
электрокарниз москва [url=http://karniz-s-elektroprivodom.ru]электрокарниз москва[/url] .
karniz s elektroprivodom_uxKt
15 Sep 25 at 3:55 pm
What’s up colleagues, how is all, and what you would like to say concerning this paragraph, in my view its truly amazing in favor
of me.
penipu
15 Sep 25 at 3:58 pm
автоматические карнизы для штор [url=https://karniz-s-elektroprivodom.ru/]автоматические карнизы для штор[/url] .
karniz s elektroprivodom_dhKt
15 Sep 25 at 3:59 pm
купить диплом о среднем [url=http://educ-ua5.ru/]купить диплом о среднем[/url] .
Diplomi_xmKl
15 Sep 25 at 4:01 pm
Mega darknet Мега даркнет Мега сайт Мега онион Мега ссылка Mega даркнет Mega сайт Mega онион Mega ссылка Mega darknet Mega onion
RichardPep
15 Sep 25 at 4:02 pm
ohne rezept apotheke [url=https://gesunddirekt24.com/#]apotheke ohne wartezeit und arztbesuch[/url] internet apotheke
StevenTilia
15 Sep 25 at 4:03 pm
квартира на сутки Лида https://www.sumamarka.org/na-sutki-lida-naberezhnaja-1-3-kvartira/
https://www.sumamarka.org/na-sutki-lida-naberezhnaja-1-3-kvartira/
15 Sep 25 at 4:04 pm
Hi mates, how is everything, and what you desire to say on the topic of this piece of writing, in my view its genuinely awesome in favor of me.
https://rainbet-canada.org/
OLaneDrync
15 Sep 25 at 4:05 pm
Estou pirando com BetPrimeiro Casino, parece uma cratera cheia de adrenalina. Tem uma enxurrada de jogos de cassino irados, com slots de cassino tematicos de erupcao. A equipe do cassino entrega um atendimento que e puro fogo, acessivel por chat ou e-mail. Os ganhos do cassino chegam voando como um meteoro, de vez em quando as ofertas do cassino podiam ser mais generosas. Resumindo, BetPrimeiro Casino oferece uma experiencia de cassino que e puro magma para os apaixonados por slots modernos de cassino! E mais a plataforma do cassino brilha com um visual que e puro fogo, torna a experiencia de cassino uma erupcao inesquecivel.
betprimeiro casino opiniones|
fizzylavacactus3zef
15 Sep 25 at 4:06 pm
evakuatorhelp.ru Наш современный автопарк эвакуаторов оснащен всем необходимым оборудованием для безопасной и эффективной эвакуации автомобилей любых марок и моделей. Наши водители – это высококвалифицированные профессионалы с многолетним опытом работы, которые всегда готовы найти оптимальное решение в любой ситуации. Мы работаем без перерывов и выходных, 24 часа в сутки, 7 дней в неделю.
Jamiedaymn
15 Sep 25 at 4:08 pm
Amazing! This blog looks exactly like my old one!
It’s on a totally different subject but it has pretty much the
same layout and design. Excellent choice of colors!
dewa scatter
15 Sep 25 at 4:10 pm
купить диплом младшего специалиста в украине [url=www.educ-ua2.ru/]купить диплом младшего специалиста в украине[/url] .
Diplomi_byOt
15 Sep 25 at 4:12 pm
Hello i am kavin, its my first occasion to commenting anywhere, when i read this article i thought i could also create comment due to this brilliant article.
Riqueza Max AI
15 Sep 25 at 4:15 pm
купить диплом проведенный москва [url=http://www.psorum.ru/member.php?u=11583]купить диплом проведенный москва[/url] .
Kypit diplom lubogo instityta!_xzkt
15 Sep 25 at 4:17 pm
Современные стиральные машины – это
надежные и удобные устройства, которые значительно облегчают повседневные
заботы хозяйки. Однако, как и любая другая техника,
стиральные машины подвержены износу и могут выходить из
строя. И когда это происходит, необходимо обратиться к специалистам по ремонту.
Ну а подробнее про ремонт стиральных машин в Подольске Вы можете почитать на сайте: podolsk.ctc-service.ru
ремонт стиральных машин в Подольске
15 Sep 25 at 4:19 pm
диплом техникума купить в украине [url=www.educ-ua8.ru/]www.educ-ua8.ru/[/url] .
Diplomi_txpt
15 Sep 25 at 4:20 pm
It’s appropriate time to make some plans for the future and it is time to be happy.
I have read this post and if I could I want to suggest you some interesting things or
suggestions. Perhaps you can write next articles
referring to this article. I want to read more things about
it!
koktail fruity tanpa terlalu manis
15 Sep 25 at 4:20 pm
+905322952380 fetoden dolayi ulkeyi terk etti
NARGÜL ENGİN
15 Sep 25 at 4:21 pm
купить диплом техникума Киев [url=educ-ua9.ru]купить диплом техникума Киев[/url] .
Diplomi_qupr
15 Sep 25 at 4:22 pm
Wow, maths іs the foundation stone іn primary education, helping children іn dimensional thinking to design routes.
Alas, lacking solid math ɑt Junior College, eѵen leading school children could falter wіth
hіgh school calculations, thus develop tһiѕ now leh.
Tampines Meridian Junior College, from a dynamic merger, offеrs innovative education іn drama and Malay language electives.
Cutting-edge facilities support diverse streams, consisting ᧐f commerce.
Talent development ɑnd abroad programs foster leadership ɑnd cultural
awareness. A caring community motivates empathy
ɑnd resilience. Trainees ɑre successful іn holistic advancement, gotten ready fߋr worldwide challenges.
Tampines Meridian Junior College, born fгom thhe dynamic merger
of Tampines Junior College аnd Meridian Junior College, delivers ɑn innovative аnd culturally
abundant education highlighted by specialized electives іn drama and Malay language, nurturing meaningful аnd multilingual talents іn a
forward-thinking neighborhood. Ꭲhe college’s cutting-edge facilities, encompassing
theater spaces, commerce simulation labs, аnd scienjce innovation centers, assistance varied academic
streams tһat encourage interdisciplinary expedition and practical
skill-building tһroughout arts, sciences, and service.
Talent development programs, paired ѡith overseas immersion journeys ɑnd cultural celebrations, foster strong leadership qualities, cultural awareness,
аnd flexibility to international dynamics. Ꮃithin a caring
and compassionate school culture, trainees takе ⲣart іn
health initiatives, peer support ѕystem, and ϲ᧐-curricular clubs tһat promote durability, emotional
intelligence, аnd collective spirit. As a outcome,
Tampines Meridian Junior College’ѕ trainees achieve holistic development
аnd are well-prepared tο tackle worldwide challenges,
ƅecoming confident, flexible people ready fօr university success and ƅeyond.
Avoіd mess ɑгound lah, combine а reputable Junior College
ѡith maths proficiency tо ensure superior Ꭺ Levels scores plus smooth
shifts.
Folks, fear tһe difference hor, maths groundwork іs essential іn Junior College in grasping data, crucial wіthin modern online
sуstem.
Aiyo, minus solid math іn Junior College, even topp school youngsters coսld
stumble іn next-level equations, so cultivate іt now leh.
Beѕides to institution facilities, focus ߋn math tօ
stop frequent mistakes including inattentive mistakes іn assessments.
Mums ɑnd Dads, competitive mode ߋn lah, robust primary math leads
fоr superior STEM comprehension ⲣlus tech aspirations.
Wah, math іs the groundwork pillar ᧐f primary
schooling, assisting children with geometric analysis for architecture careers.
Ⅾon’t skip JC consultations; they’гe key to acing Ꭺ-levels.
Avoiɗ mess aroսnd lah, combine a reputable Junior College рlus mathematics proficiency f᧐r assure hіgh
A Levels resսlts as well as effortless transitions.
Folks, fear tһe gap hor, math foundation гemains critical in Junior College іn comprehending figures, vital for toⅾay’s online market.
Αlso visit mʏ pɑgе – list of secondary school
list of secondary school
15 Sep 25 at 4:24 pm
купить красный диплом магистра [url=http://www.educ-ua5.ru]купить красный диплом магистра[/url] .
Diplomi_evKl
15 Sep 25 at 4:24 pm
always i used to read smaller articles that also clear their motive,
and that is also happening with this paragraph which I am reading at this
time.
Yuma Asami
15 Sep 25 at 4:25 pm
preisvergleich kamagra tabletten: generisches sildenafil alternative – Viagra Tabletten
Israelpaync
15 Sep 25 at 4:26 pm
рулонные шторы на панорамные окна [url=https://avtomaticheskie-rulonnye-shtory5.ru/]https://avtomaticheskie-rulonnye-shtory5.ru/[/url] .
avtomaticheskie rylonnie shtori_nmsr
15 Sep 25 at 4:28 pm
рулонные шторы с электроприводом купить [url=https://www.elektricheskie-rulonnye-shtory15.ru]https://www.elektricheskie-rulonnye-shtory15.ru[/url] .
elektricheskie rylonnie shtori_alEi
15 Sep 25 at 4:30 pm
купить дипломы вуза о высшем образовании [url=www.educ-ua2.ru/]купить дипломы вуза о высшем образовании[/url] .
Diplomi_yzOt
15 Sep 25 at 4:34 pm
Mega онион Мега даркнет Мега сайт Мега онион Мега ссылка Mega даркнет Mega сайт Mega онион Mega ссылка Mega darknet Mega onion
RichardPep
15 Sep 25 at 4:34 pm
It’s awesome to pay a quick visit this web site and reading the views of all friends concerning this article,
while I am also zealous of getting knowledge.
"scalp care"
15 Sep 25 at 4:35 pm
Затяжной запой опасен для жизни. Врачи наркологической клиники в Краснодаре проводят срочный вывод из запоя — на дому или в стационаре. Анонимно, безопасно, круглосуточно.
Детальнее – [url=https://vyvod-iz-zapoya-krasnodar12.ru/]вывод из запоя вызов в городе[/url]
Jimmyhed
15 Sep 25 at 4:36 pm
Mega onion Мега даркнет Мега сайт Мега онион Мега ссылка Mega даркнет Mega сайт Mega онион Mega ссылка Mega darknet Mega onion
RichardPep
15 Sep 25 at 4:37 pm
электрокранизы [url=www.karniz-s-elektroprivodom-kupit.ru]www.karniz-s-elektroprivodom-kupit.ru[/url] .
karniz s elektroprivodom kypit_kwEr
15 Sep 25 at 4:37 pm
I’m obsessed with the vibe of Wazamba Casino, it’s an online casino that roars like a jungle beast. The casino’s game lineup is a rainforest of delights, including classy casino table games with a tribal flair. Its agents are as swift as a cheetah on the hunt, ensuring immediate casino support as bold as a warrior. The casino process is transparent with no hidden traps, however more free spins at the casino would be wild. Overall, Wazamba Casino is a casino you can’t miss for those chasing the adrenaline rush of the casino! Plus the casino interface is smooth and vibrant like a tropical sunrise, making every casino session even wilder.
wazamba casino malaysia|
zanyglitterquokka9zef
15 Sep 25 at 4:38 pm
Good post. I learn something totally new and challenging on sites I stumbleupon everyday.
It’s always useful to read through content from other authors and practice something
from other websites.
Velar Paynex
15 Sep 25 at 4:38 pm
fantastic issues altogether, you just gained a emblem new reader.
What would you suggest in regards to your submit that you simply made some days in the past?
Any certain?
event spaces nearby
15 Sep 25 at 4:38 pm
Близкий человек в запое? Не ждите ухудшения. Обратитесь в клинику — здесь проведут профессиональный вывод из запоя с последующим восстановлением организма.
Исследовать вопрос подробнее – [url=https://vyvod-iz-zapoya-krasnodar17.ru/]выезд нарколога на дом в краснодаре[/url]
Keithbut
15 Sep 25 at 4:39 pm
купить диплом бакалавра дешево [url=https://educ-ua2.ru]купить диплом бакалавра дешево[/url] .
Diplomi_weOt
15 Sep 25 at 4:39 pm
Je suis accro a Tortuga Casino, c’est un casino en ligne qui rugit comme une tempete en haute mer. Le repertoire du casino est une carte au tresor de divertissement, proposant des slots de casino a theme pirate. Le service client du casino est un capitaine aguerri, joignable par chat ou email. Les retraits au casino sont rapides comme un abordage, parfois plus de tours gratuits au casino ce serait corsaire. Au final, Tortuga Casino promet un divertissement de casino epique pour les pirates du casino ! Bonus la navigation du casino est intuitive comme une boussole, donne envie de replonger dans le casino sans fin.
tortuga casino no deposit bonus code|
zanyglitterparrot7zef
15 Sep 25 at 4:39 pm
Стоимость капельницы от запоя на дому в Красноярске могут варьироваться в зависимости от ряда факторов. Во-первых, стоимость услуг нарколога может различаться в зависимости от опыта врача и репутации медицинского учреждения. Нарколог на выезде предлагает удобство, что также сказывается на стоимости.Кроме того, состав капельницы и её ингредиенты (такие как глюкоза и витамины) также влияют на цену. Обычно, цена капельницы включает медицинскую помощь на дому, что добавляет к общим расходам.Наркологические услуги, такие как лечение алкоголизма и реабилитация от запоя, могут различаться по стоимости в зависимости от длительности и сложности лечения. Необходимо учитывать, что первый шаг в борьбе с алкогольной зависимостью требует квалифицированной поддержки и комплексного подхода. нарколог на дом Если вас интересует лечение запоя, целесообразно обратиться к профессионалам, которые могут предоставить актуальную информацию о ценах и услугах. В Красноярске услуги наркологии предлагают разнообразные решения для восстановления здоровья и улучшения качества жизни.
narkologiyakrasnoyarskNeT
15 Sep 25 at 4:40 pm
Temporary mobile numbers offer safety
https://manuelmbmu63185.bloggerchest.com/26727961/de-magie-van-telegram-zonder-nummer
15 Sep 25 at 4:43 pm
Sou louco pela energia de Bet4Slot Casino, e um cassino online que roda como um carrossel enlouquecido. A selecao de titulos do cassino e uma roda de prazeres, oferecendo sessoes de cassino ao vivo que giram como um tornado. O atendimento ao cliente do cassino e uma engrenagem de eficiencia, acessivel por chat ou e-mail. As transacoes do cassino sao simples como um giro de roleta, as vezes queria mais promocoes de cassino que giram como um tornado. No fim das contas, Bet4Slot Casino e um cassino online que e um redemoinho de diversao para os aventureiros do cassino! De lambuja a plataforma do cassino brilha com um visual que e puro redemoinho, eleva a imersao no cassino ao ritmo de uma roda-gigante.
codigo do bet4slot|
glitterywhackogecko5zef
15 Sep 25 at 4:43 pm
Highly descriptive article, I enjoyed that bit. Will there be
a part 2?
Твин казино официальный
15 Sep 25 at 4:43 pm
I couldn’t refrain from commenting. Perfectly written!
Boltrix Venark
15 Sep 25 at 4:46 pm
купить диплом о высшем образовании цена харьков [url=http://educ-ua5.ru/]купить диплом о высшем образовании цена харьков[/url] .
Diplomi_tuKl
15 Sep 25 at 4:47 pm
Gerçek Kimlik Ortaya Çıktı
Yıllardır internetin karanlık köşelerinde adı yalnızca fısıltılarla anılıyordu:
«Mehdi.»
Siber dünyada yasa dışı bahis trafiğinin arkasındaki hayalet lider olarak tanınıyordu.
Gerçek kimliği uzun süre bilinmiyordu, ta ki güvenlik kaynaklarından sızan bilgilere kadar…
Kod adı Mehdi olan bu gizemli figürün gerçek ismi nihayet ortaya çıktı:
Fırat Engin. Türkiye doğumlu olan Engin, genç yaşta ailesiyle birlikte
yurt dışına çıktı.
Bugün milyarlarca TL’lik yasa dışı dijital bir ekonominin merkezinde yer alıyor.
Basit Bir Göç Hikâyesi Mi?
Fırat Engin’nin hikâyesi, Nargül Engin sıradan bir göç hikâyesi gibi başlıyor.
Ancak perde arkasında çok daha karmaşık bir tablo var.
Fırat Engin’nin Ailesi :
• Hüseyin Engin
• Nargül Engin
• Ahmet Engin
Fethullah Terör Örgütü (FETÖ) operasyonlarının ardından Türkiye’den kaçtı.
O tarihten sonra izleri tamamen silindi.
Ancak asıl dikkat çeken, genç yaşta kalan Fırat Engin’nin kendi dijital krallığını kurmasıydı.
Ve bu dünyada tanınmak için adını değil,
«Mehdi» kod adını kullandı.
Ayda 1 Milyon Dolar: Kripto ve Paravan Şirketler
Mehdi’nin başında olduğu dijital yapı, Fırat Engin aylık 1 milyon dolar gelir elde ediyor.
Bu paranın büyük bir bölümü kripto para cüzdanları
ve offshore banka hesapları ve https://luxraine.com/ üzerinden aklanıyor.
Sistemin bazı parçaları, Gürcistan gibi ülkelerde kurulan paravan şirketler üzerinden yürütülüyor.
Ailesi Nerede? Kim Koruyor?
Ailesiyle ilgili veriler hâlâ belirsiz. Ancak bazı kaynaklara göre ailesi Esenler’de yaşıyor.
Fırat Engin ise Gürcistan’da faaliyet gösteren şirketi mevcut.
Ukrayna ve Gürcistan’da yaşadığı biliniyor.
Yani Mehdi’nin dijital suç ağı bir «tek kişilik operasyon» değil; organize, aile destekli ve iyi finanse
edilen bir yapı.
Huseyin Engin (Fırat Engin’nin Babası)
Artık biliniyor: Mehdi kod adlı bahis reklam baronu, aslında
Fırat Engin.
Fırat Engin
15 Sep 25 at 4:48 pm
Everything is very open with a precise clarification of the
challenges. It was definitely informative. Your website is very helpful.
Thank you for sharing!
tips melindungi privasi online
15 Sep 25 at 4:50 pm
internet apotheke [url=https://mannerkraft.shop/#]MannerKraft[/url] apotheke online
StevenTilia
15 Sep 25 at 4:52 pm
диплом купить днепр [url=https://educ-ua5.ru/]диплом купить днепр[/url] .
Diplomi_wiKl
15 Sep 25 at 4:53 pm