Wanneer casino weer open South Holland

  1. Roulette Wiel: Wed liefde om u een mooie gemakkelijke manier om een overwinning te garanderen wanneer u klikt om te draaien.
  2. Gratis Casino I Mobilen - Rekening houdend met alles, heeft dit Grosvenor beoordeling denk dat deze operator heeft het recht om zichzelf te labelen als de meest populaire casino in het Verenigd Koninkrijk.
  3. Wat Heb Je Nodig Om Bingo Te Spelen: Jagen prooi groter dan zichzelf, terwijl heimelijk negeren van hun vijand early warning systeem is slechts een van de vele coole combinaties in het spel.

Winkans bij loterijen

Wild Spells Online Gokkast Spelen Gratis En Met Geld
We hebben deze download online casino's door middel van een strenge beoordeling proces om ervoor te zorgen dat u het meeste uit uw inzetten wanneer u wint.
Nieuwe Gokkasten Gratis
Dit betekent dat het hangt af van wat inkomstenbelasting bracket je in, en of de winst zal duwen u in een andere bracket.
The delight is de geanimeerde banner met de welkomstpromotie bij de eerste duik je in.

Pokersites voor Enschedeers

Nieuw Casino
De reel set is 7x7, met een totaal van 49 symbolen in het spel.
Casigo Casino 100 Free Spins
Holland Casino Eindhoven is een vestiging waar veel georganiseerd op het gebied van entertainment..
Casino Spel Gratis Slots

Sjoerd Maessen blog

PHP and webdevelopment

PHP hook, building hooks in your application

with 120,176 comments

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!

Written by Sjoerd Maessen

May 23rd, 2011 at 8:02 pm

Posted in API

Tagged with , , ,

120,176 Responses to 'PHP hook, building hooks in your application'

Subscribe to comments with RSS or TrackBack to 'PHP hook, building hooks in your application'.

  1. купить диплом в оренбурге [url=http://rudik-diplom4.ru/]купить диплом в оренбурге[/url] .

    Diplomi_lqOr

    29 Oct 25 at 11:01 pm

  2. купить диплом в тобольске [url=https://www.rudik-diplom11.ru]https://www.rudik-diplom11.ru[/url] .

    Diplomi_sgMi

    29 Oct 25 at 11:02 pm

  3. Thank you for the good writeup. It in truth used to be a enjoyment account it.
    Glance complicated to far delivered agreeable from you!
    However, how can we be in contact?

    C5U data file

    29 Oct 25 at 11:04 pm

  4. блог о маркетинге [url=https://statyi-o-marketinge7.ru/]блог о маркетинге[/url] .

  5. sqyyw.com – Content reads clearly, helpful examples made concepts easy to grasp.

    Ron Clozza

    29 Oct 25 at 11:06 pm

  6. купить диплом в сарапуле [url=https://www.rudik-diplom13.ru]купить диплом в сарапуле[/url] .

    Diplomi_ijon

    29 Oct 25 at 11:07 pm

  7. Williamgon

    29 Oct 25 at 11:07 pm

  8. курс seo [url=https://kursy-seo-11.ru/]https://kursy-seo-11.ru/[/url] .

    kyrsi seo_kcEl

    29 Oct 25 at 11:08 pm

  9. купить диплом с реестром о высшем образовании [url=http://www.frei-diplom1.ru]купить диплом с реестром о высшем образовании[/url] .

    Diplomi_fsOi

    29 Oct 25 at 11:08 pm

  10. With havin so much content and articles do you ever run into any problems of plagorism or copyright violation? My
    blog has a lot of completely unique content I’ve either
    written myself or outsourced but it appears a lot
    of it is popping it up all over the internet
    without my agreement. Do you know any techniques to help stop content from
    being stolen? I’d really appreciate it.

  11. где купить диплом техникума старая [url=www.frei-diplom7.ru/]где купить диплом техникума старая[/url] .

    Diplomi_mkei

    29 Oct 25 at 11:10 pm

  12. купить диплом во владимире [url=http://www.rudik-diplom2.ru]купить диплом во владимире[/url] .

    Diplomi_rgpi

    29 Oct 25 at 11:10 pm

  13. куплю диплом младшей медсестры [url=www.frei-diplom13.ru/]www.frei-diplom13.ru/[/url] .

    Diplomi_tdkt

    29 Oct 25 at 11:10 pm

  14. I do not even know the way I stopped up right here, however I assumed
    this post was great. I do not recognize who you might be but definitely you are
    going to a well-known blogger should you aren’t already.

    Cheers!

  15. диплом о среднем образовании купить легально [url=http://frei-diplom3.ru/]http://frei-diplom3.ru/[/url] .

    Diplomi_jxKt

    29 Oct 25 at 11:12 pm

  16. купить диплом менеджера по туризму [url=https://www.rudik-diplom11.ru]купить диплом менеджера по туризму[/url] .

    Diplomi_tcMi

    29 Oct 25 at 11:12 pm

  17. skachat linebet

    29 Oct 25 at 11:12 pm

  18. купить диплом колледжа старого [url=http://www.frei-diplom12.ru]http://www.frei-diplom12.ru[/url] .

    Diplomi_ylPt

    29 Oct 25 at 11:14 pm

  19. seo базовый курc [url=www.kursy-seo-12.ru/]www.kursy-seo-12.ru/[/url] .

    kyrsi seo_smor

    29 Oct 25 at 11:14 pm

  20. Нужно было сгенерировать фото нейросетью онлайн бесплатно для блога, и подборка выручила. Нашла идеальный сервис с первого раза, остальные инструменты из обзора держу в резерве. Очень полезная информация: сгенерировать фото нейросетью онлайн бесплатно

    MichaelPrion

    29 Oct 25 at 11:14 pm

  21. I do not even know the way I ended up right here, but
    I assumed this submit was once great. I do not recognise who
    you are but definitely you’re going to a famous blogger in case you are not
    already. Cheers!

    Garrett

    29 Oct 25 at 11:15 pm

  22. Good article! We will be linking to this particularly great
    article on our website. Keep up the good writing.

  23. Удобно ли получать медицинскую помощь дома? В Екатеринбурге служба Детокс готова выслать нарколога к вам или вашим близким просто по звонку — по телефону горячей линии, доступен вызов 24/7. Процедуры, включая капельницы, снятие синдрома абстиненции и другие меры для безопасного вывода из запоя, проводятся с использованием сертифицированных лекарств и под контролем специалиста.
    Подробнее – [url=https://narkolog-na-dom-ekaterinburg12.ru/]нарколог на дом срочно в екатеринбурге[/url]

    JeffreyKen

    29 Oct 25 at 11:17 pm

  24. медсестра которая купила диплом врача [url=https://frei-diplom13.ru/]медсестра которая купила диплом врача[/url] .

    Diplomi_zikt

    29 Oct 25 at 11:17 pm

  25. купить диплом в находке [url=https://rudik-diplom2.ru]купить диплом в находке[/url] .

    Diplomi_hlpi

    29 Oct 25 at 11:17 pm

  26. Full Write-up

    PHP hook, building hooks in your application – Sjoerd Maessen blog at Sjoerd Maessen blog

    Full Write-up

    29 Oct 25 at 11:18 pm

  27. купить диплом с проводкой моего [url=frei-diplom3.ru]купить диплом с проводкой моего[/url] .

    Diplomi_qnKt

    29 Oct 25 at 11:18 pm

  28. локальное seo блог [url=http://www.statyi-o-marketinge7.ru]http://www.statyi-o-marketinge7.ru[/url] .

  29. seo и реклама блог [url=https://statyi-o-marketinge7.ru]https://statyi-o-marketinge7.ru[/url] .

  30. купить диплом цена [url=http://rudik-diplom13.ru]купить диплом цена[/url] .

    Diplomi_awon

    29 Oct 25 at 11:21 pm

  31. купить проведенный диплом спб [url=frei-diplom3.ru]frei-diplom3.ru[/url] .

    Diplomi_ayKt

    29 Oct 25 at 11:22 pm

  32. можно купить диплом медсестры [url=http://frei-diplom13.ru]можно купить диплом медсестры[/url] .

    Diplomi_zfkt

    29 Oct 25 at 11:22 pm

  33. Hey, parents, ɗo not claim bo jio hor, famous institutions focus
    оn empathy, foг human resources or guidance jobs.

    Hey hey, Singapore parents, prestigious primary sets tһе mood for order, leading to steady superiority іn secondary school ɑnd
    ahead.

    Guardians, fearful оf losing mode engaged lah, robust primary mathematics гesults tⲟ improved science comprehension aѕ well aѕ engineering aspirations.

    Eh eh, calm pom ρi pi, math proves among in tthe leading subjects іn primary school, laying
    groundwork fߋr A-Level calculus.

    Wow, arithmetic іs the groundwork pillar in primary learning,
    assisting kids fоr geometric analysis іn building routes.

    Folks, kiasu style activated lah, robust
    primary arithmetic guides fߋr superior STEM
    grasp ɑnd engineering dreams.

    Ⲟһ no, primary arithmetic instructs practical սseѕ ѕuch
    as budgeting, so guarantee yoսr kid grasps this correctly from eaгly.

    North Vіew Primary School ᧐ffers a supportive setting motivating development ɑnd accomplishment.

    Tһe school develops strong foundations tһrough quality education.

    Catholic Ꮋigh School pr᧐vides a strenuous curriculum іn a values-driven environment foг үoung boys.

    Ꮤith strong focus on character and academics, іt prepares
    leaders.
    Parents choose іt foг the distinguished reputation ɑnd overall development.

    my web page … Fairfield Methodist School (Secondary)

  34. где купить диплом техникума кого [url=http://frei-diplom12.ru]где купить диплом техникума кого[/url] .

    Diplomi_ruPt

    29 Oct 25 at 11:25 pm

  35. оптимизация сайта блог [url=https://www.statyi-o-marketinge7.ru]оптимизация сайта блог[/url] .

  36. Williamgon

    29 Oct 25 at 11:27 pm

  37. купить диплом парикмахера [url=http://www.rudik-diplom2.ru]купить диплом парикмахера[/url] .

    Diplomi_sipi

    29 Oct 25 at 11:27 pm

  38. seo курсы [url=https://kursy-seo-11.ru/]seo курсы[/url] .

    kyrsi seo_gaEl

    29 Oct 25 at 11:29 pm

  39. материалы по маркетингу [url=http://statyi-o-marketinge7.ru/]http://statyi-o-marketinge7.ru/[/url] .

  40. Williamgon

    29 Oct 25 at 11:33 pm

  41. стратегия продвижения блог [url=www.statyi-o-marketinge7.ru]www.statyi-o-marketinge7.ru[/url] .

  42. Электроприводные карнизы становятся все более популярными в современных интерьере. Эти устройства предлагают практичность и стиль для любого помещения. Используя электропривод, можно легко управлять шторами или занавесками при помощи мобильного приложения.

    Откройте для себя элегантность и удобство [url=https://karnizy-s-elektroprivodom-dlya-shtor.ru/]карнизы с электроприводом для штор +7 (499) 638-25-37[/url], которые сделают управление шторами простым и современным.

    Важным достоинством этих автоматизированных систем можно назвать. Данные конструкции универсальны и подойдут для. Также стоит отметить, что эти карнизы дают возможность создавать в доме или офисе.

    Установка карнизов с электроприводом возможна в любом помещении . Инсталляция не требует значительных усилий, и с этим может справиться практически каждый. Вдобавок, такие карнизы легко интегрируются в .

    Несмотря на все достоинства, существуют и определенные минусы . В частности,. инвестиции в комфорт и удобство , ведь значительно облегчают повседневные задачи .

  43. как купить диплом техникума в воронеже [url=www.frei-diplom12.ru/]как купить диплом техникума в воронеже[/url] .

    Diplomi_loPt

    29 Oct 25 at 11:36 pm

  44. Ваша фраза очень хороша
    jws international s.a.[url=https://web-livejasmin.com/de-de/]https://web-livejasmin.com/de-de/[/url] r.l. Exceptions are special/other regulatory laws that may be applied to disputes concerning contests in accordance with all paragraph 9 of this program and in harmony with the special rules applicable to which, or programs all other issues arising from this Agreements on provision of services, and any other dispute resolution mentioned above, are governed by and interpreted according to the laws of the Grand Duchy of Luxembourg, notwithstanding the provisions of the conflict of laws driver’s license and other mandatory legislative regulations.

    MarkArcah

    29 Oct 25 at 11:36 pm

  45. Eh eh, composed pom pi pi, maths is ρart іn thе leading subjects ɑt Junior College, laying groundwork tߋ
    A-Level hіgher calculations.
    Іn additiοn to establishment facilities, emphasize
    оn math to stop common errors lіke inattentive
    mistakes at assessments.

    Jurong Pioneer Junior College, formed from a strategic merger,
    սsеs a forward-thinking educcation tһat stresses China preparedness
    аnd global engagement. Modern schools provide exceptional resources fߋr
    commerce, sciences, ɑnd arts, cultivating usefuⅼ
    skills and creativity. Students enjoy enhancing programs ⅼike
    international cooperations ɑnd character-building initiatives.
    Τһe college’ѕ helpful neighborhood promotes durability
    ɑnd management through varied c᧐-curricular activities.
    Graduates ɑrе fulⅼy equipped fоr vibrant careers, embodying care аnd continuous improvement.

    Millennia Institute sticks օut ᴡith іtѕ distinctive threе-үear pre-university pathway leading tо the
    GCE A-Level evaluations, providing flexible ɑnd extensive
    research study alternatives іn commerce, arts, and sciences tailored to
    accommodate ɑ varied variety of learners ɑnd their distinct aspirations.

    Аs a centralized institute, it offers tailored guidance and support
    ցroup, including devoted scholastic consultants ɑnd counseling services, tο makoe sure every trainee’s
    holistic advancement and scholastic success
    іn a encouraging environment. Τhe institute’s cutting
    edge centers, ѕuch as digital learning centers, multimedia resource centers,
    ɑnd collective workspaces, develop аn engaging platform fοr ingenious teaching techniques ɑnd
    hands-օn jobs that bridge theory wіth practical application. Ƭhrough
    strong market partnerships, trainees access real-ѡorld experiences
    lіke internships, workshops wіth specialists, ɑnd scholarship
    chances tһat boost their empployability ɑnd profession readiness.
    Alumni fгom Millennia Institute regularly achieve success
    іn higһer education аnd expert arenas, showing thе institution’s unwavering commitment
    tⲟ promoting lifelong knowing, flexibility, аnd individual empowerment.

    Οһ dear, minus robust maths іn Junior College, еven leading institution kids mɑy falter ԝith next-level algebra, tһuѕ develop
    it now leh.
    Listen up, Singapore folks, maths proves рrobably tһe highly
    important primary topic, promoting imagination іn pгoblem-solving fⲟr groundbreaking careers.

    Hey hey, Singapore moms аnd dads, maths proves ⅼikely the highly essential primary topic, promoting innovation іn issue-resolving to
    creative professions.

    Oi oi, Singapore parents, maths proves ⅼikely the highly impоrtant primary discipline, promoting imagination fⲟr problem-solving tο creative jobs.

    Math at A-levels sharpens decision-mɑking undеr pressure.

    Аvoid mess around lah, combine a excellent Junior College alongside math superiority іn orɗer to assure superior A Levels
    marks аs well ɑs smooth shifts.

    mү web-site; qwss secondary school

  46. Наши услуги в Ростове-на-Дону включают не только физическую детоксикацию, но и психологическую поддержку для более эффективного восстановления.
    Углубиться в тему – [url=https://vyvod-iz-zapoya-rostov235.ru/]вывод из запоя вызов[/url]

    Basilescok

    29 Oct 25 at 11:37 pm

  47. купить диплом занесением реестр отзывы [url=https://frei-diplom3.ru]купить диплом занесением реестр отзывы[/url] .

    Diplomi_wuKt

    29 Oct 25 at 11:37 pm

  48. I read this article completely about the resemblance
    of latest and earlier technologies, it’s amazing article.

  49. seo и реклама блог [url=http://statyi-o-marketinge7.ru/]http://statyi-o-marketinge7.ru/[/url] .

  50. купить диплом с занесением в реестр в спб [url=frei-diplom1.ru]frei-diplom1.ru[/url] .

    Diplomi_kkOi

    29 Oct 25 at 11:39 pm

Leave a Reply