اخیراً ایدهای به ذهن هوشنگ خطور کرده است که قصد دارد آن را پیادهسازی کند. ایده از این قرار است که او ابتدا فریمورک کوچکی را پیادهسازی کند و سپس یک سیستم لاگ را برای آن پیادهسازی کند. او این سیستم را لاگچری نامیده است.
او قسمتهایی از این پروژه را انجام داده، اما در پیادهسازی بعضی از قسمتها به مشکل خورده است. شما باید برای قسمتهایی از پروژه که او به مشکل خورده است به او کمک کنید.
پروژهی اولیه را از این لینک دانلود کنید.
برای اجرای پروژه، باید php
و composer
را از قبل نصب کرده باشید.
composer install
را در پوشهی اصلی پروژه برای نصب نیازمندیها اجرا کنید.php -S 127.0.0.1:8000 -t public
را در پوشهی اصلی پروژه اجرا کنید. پروژه از طریق آدرس http://127.0.0.1:8000 در دسترس خواهد بود.در اولین گام باید کدهای این پروژه را مطالعه کرده و با منطق پروژه آشنا شوید. در ادامه، باید تغییراتی که در ادامه ذکر شده است را در پروژه اعمال کنید.
ابتدا باید کلاس Core\Logger
را پیادهسازی کنید، اگر به این کلاس مراجعه کنید خواهید دید که دارای کانستراکتور و دو متد writeLog
و getLog
است، پیادهسازی هرکدام باید بهصورت زیر باشد:
writeLog
برای نوشتن متنی برروی فایل لاگ استفاده میشود.getLog
برای دریافت محتوای فایل لاگ استفاده میشود.سپس باید روتهای زیر را به پروژه اضافه کنید:
/
که باید متد index
از کلاس HomeController
را فراخوانی کند./about-us
که باید متد about
از کلاس HomeController
را فراخوانی کند./contact-us
که باید متد contact
از کلاس HomeController
را فراخوانی کند.در انتها باید این متدها را در کنترلر HomeController
پیادهسازی کنید به نحوی که اگر هر روت فراخوانی شد، ابتدا در فایل storage/logs/app.log
و در یک خط عبارتی با قالب زیر درج شود:
در قالب بالا CURRENT_DATE_TIME
بهمعنی تاریخ و ساعت کنونی است که باید با فرمت Y-m-d H:i:s
باشد و مقدار NAME
هم باید برای روت /
برابر با Home
، برای روت /about-us
برابر با About
و برای روت /contact-us
برابر با Contact
باشد.
سپس ویوی مربوط به هر روت render
و برگردانده شود (با استفاده از کلاس View
):
/
ویوی resources/views/index
/about-us
ویوی resources/views/about
/contact-us
ویوی resources/views/contact
فرض کنید کاربری بهترتیب روتهای /
سپس /about-us
و در انتها /contact-us
را میبیند. در نهایت، باید مقادیر زیر در فایل storage/logs/app.log
ذخیره شده باشند (خروجی متد getLog
):
با ارسال درخواست به آدرس /
، کاربر باید با صفحهی زیر مواجه شود:
app
و فایلهای core/Logger.php
و core/routes.php
هستید.پس از اعمال تغییرات، پوشههای app
و core
را زیپ کرده و آپلود کنید.