რაღა თქმა უნდა MVC და მისგან წამოსული შესანიშნავი Event-driven (ასინქრონული) პროგრამირება, ნუ დაიწყებთ პროფესორობას PHP-ს Event-Driven არ აქვსო,
MVC რათქმაუნდა აპლიკაციის აგების შესანიშნავი გადაწყვეტაა, მაგრამ თუ გინდა რომ შენი აპლიკაცია იყოს განვრცობადი და მოდულის დასამატებლად ფაილებში n-რიგის ხაზების ძებნა და
ჩანაცვლება არ მოგიწიოს, არამედ შეძლო ერთი ფაილით (ერთი კლასით) განავრცო აპლიკაცია, უნდა დააპროგრამო ასინქრონულად, PHP - მიუხედავად იმისა რომ არის Server-side (თუმცა ეს რა შუაშია
) გვაძლევს ამის საშუალებას,
მაგალითად:
პირველ რიგში უნდა ამოიცნო მოდული რომელიც შეიცავს ფაილს ერთი კონკრეტული სახელით (ნებისმიერი მოდულისთვის), დავარქვათ - module.php,
და რომელიც შეიცავს საკონფიგურაციო ფაილს, მონაცემით რომელიც მოგვცემს model.php-ში გაწერილი Event კლასის სახელწოდებას,
შემდეგ თითოეული მოდულისთვის გამოვიძახოთ სხვადასხვა კონკრეტული დასახელების მეთოდი სხვადასხვა ოპერაციის შესრულებისას, მაგალითად,
ჩვენ კონტენტი გამოგვაქვს ფუნქციით <?php echo $this->content(); ?>, ჩვენ გვინდა რომ მოდულმა კონტენტის ზევით გამოიტანოს ტექსტი: Hello world!.
ამისათვის content() - მეთოდში უნდა გავწეროთ შემდეგი:
Event::trigger('BeforeContentLoad'); (ამისათვის საჭიროა ივენთ კლასი, რომელიც პირველად ამოიცნობს ყველა თავსებად მოდულს და შეინახავს პრივატულ ცვლადში მომავალი გამოყენებისთვის),
რომელიც გამოიძახებს onBeforeContentLoad - მეთოდს Reflect კლასით თითოეული მოდულისთვის, რომელიც შეიცავს ამ მეთოდს (ასევე ვამოწმებთ Reflection-ით)
ანუ მაგალითად:
class TestModuleEvents extends Module
{
public function onBeforeContentLoad()
{
echo 'Hello world!';
}
}
ზემოთ გაწერილი მეთოდი ავტომატურად იქნება გამოძახებული კონტენტის ჩატვირთვამდე
ანუ ივენთ კლასს ჩავტვირთავთ მოდელში, (მონაცემთა ბაზასთან კავშირის შემდეგ (თუ საჭიროა რათქმაუნდა))
და შემდეგ კონკრეტულ მეთოდებს გამოვიძახებთ გარკვეულ ოპერაციის შესრულებამდე და შესრულების შემდეგ ან შესრულების პროცესში (მაგ: Loop-ებში),
შეიძლება მაინცდამაინც კარგად ვერ ავხსენი, თუ რამე დაწერეთ და შევეცდები გიპასუხოთ ამ თემასთან დაკავშირებით
This post has been edited by Risley on 23 Jan 2014, 21:54
ეგ რა არის გერმანიაში 1 თვე ვიყავი 10 კვადრატში. ფეხზე რომ ვდგებოდი სამზარეულოშიც საძინებელშიც აბაზანაშიც და ტუალეტშიც ერთდროულად ვიყავი. (c) MoBi Tattooist
You can't uncroissant a croissant (c) @simpingforgrogu