چگونه تغییر method ها در MVC

سلام دوستان

در حال نوشتن یک Framework ساده برای یادگیری و درک بیشتر MVC هستم.

حالا می خوام در این سیستمی که می نویستم یک کاری انجام بدم.
طبق جستجوهایی که انجام دادم اصطلاحا Hook نام داره.
از https://github.com/bainternet/PHP-Hooks یک اسکریپت گرفتم. اما تا اونجا که فهمیدم، نیاز مرا برطرف نمیکنه.

در کل میخوام یک سیستم بنویسم که بتونه به method ها مدیریت کنه.

چند مثال:

---------------------------------------------------------------------------------------------------------------------
مثال ۱:

یک Controller داریم به نام اخبار (news) و در آن ۴ method وجود دارد ( list, add, edit, delete )
در list عنوان خبرها لیست میشود و در کنار هر خبر دو دکمه برای "ویرایش" و "حذف"
حالا می خوام بدونه اینکه کدهای news را دستکاری کنم، در کنار دکمه های ویرایش و حذف یک دکمه دیگر اضافه با عنوان " مشاهده خبر "
---------------------------------------------------------------------------------------------------------------------
مثال ۲:

یک Menu داریم که در آن لیست Link ها به صورت ساده نمایش داده میشه.
حالا میخوام بدونه دستکاری کردن کدهای Menu در پنل مدیریت در قسمت افزودن و ویرایش گزینه ای به نام آیکون اضافه کنم. تا بتوان برای هر لینک یک آیکون اختصاص داد.
که در خروجی هم باید آیکون انتخاب شده نمایش داده شود.
---------------------------------------------------------------------------------------------------------------------
مثال ۳:

یک سیستم ساده کاربری وجود دارد. که فقط شامل (Username, Password, Name, Email) هست.
حالا میخوام بدونه دستکاری کردن کدهای Users به قسمت کاربران امکان گروه بندی و ACL اضافه کنم.
در اینجا Groups یک قسمت مجاز میباشد و ACL هم مجاز، اما هردو برروی Users تاثیرگذار هستند.

اما در اینجا یک نکته وجود دارد.
Class ACL در سیستم وجود دارد. که در آن یک Method وجود دارد به نام hasPermission که در آن همیشه return true قرار دارد.
حالا باید بدونه دستکاری کردن کدهای Class ACL بتوان یک Class ACL دیگر ساخت.
این نکته را هم بیان کنم که این موضوع را هم درنظر دارم که در سیستم ۲ پوشه بسازم به نام های core و library.
و این شرط را قرار دهم که اول در library جستجو کند و Class را پیدا کند، اگر وجود نداشت در core جستجو کند.
اما میخواهم بدانم راه دیگری هم وجود دارد؟
 

جدیدترین ارسال ها

بالا