PHP فئة لإخراج النص الملون إلى وحدة التحكم

لقد صنعت نصًا بنفسي لنشر الموقع للإنتاج. لماذا كنت بحاجة لعرض ما يحدث. ولجعله أكثر وضوحًا ، قررت عرضه بالألوان. ومع ذلك ، لم أستطع العثور على شيء مناسب. على الأكثر ، تعرض المكتبة نصًا ملونًا ، لكنها لم تدعم الحشو. لذلك ، قمت بعمل مكتبتي الخاصة لهذا الغرض. ربما شخص ما سيكون مفيدا. مكتبة صغيرة (لكنها عملية) لإخراج النص الملون إلى وحدة التحكم مع دعم المسافة البادئة في هذا النموذج


Console::indent(2)->color('brown')->bgcolor('magenta')->writeln(' Habr!'); 


  1. التثبيت
  2. استخدام
  3. المسافة البادئة
  4. الأنماط
  5. تسجيل
  6. السكر النحوي

التثبيت


يمكنك استخدام الملحن للتثبيت


 composer require shasoft/console 

أو تحميل من جيثب


استخدام


قائمة بجميع الألوان المدعومة. أسماء الأعمدة هي ألوان الخلفية ، وأسماء الصفوف هي ألوان نصية.
مثال على إخراج نص اللون


إخراج نص اللون


  • وظيفة اللون ( القيمة ) - ضبط لون النص
  • دالة bgcolor ( القيمة ) - اضبط لون الخلفية
  • وظيفة الكتابة ( value1 ، value2 ، ... ) - تعرض القيمة على الشاشة. إذا لم تكن القيمة عبارة عن سلسلة ، فسيتم تحويلها إلى سلسلة باستخدام دالة php var_export ( القيمة ، صواب )
  • وظيفة إعادة تعيين () - إعادة تعيين الألوان إلى القيم الافتراضية
  • وظيفة setDefault () - تعيين الألوان الافتراضية. القيم الافتراضية: لون الخلفية = أسود ، لون النص = أبيض
  • أدخل الوظيفة ( $ resetColor = صواب). بشكل افتراضي ، تعيد استدعاء دالة إعادة تعيين الألوان إلى قيمها الافتراضية. لاحظ أنه لا يتم عرض السطر حتى يتم استدعاء الدالة enter (). هذا لأن المكتبة تدعم الحشو.
  • وظيفة writeln ( ... ) - كتابة ( ... ) + أدخل ()

 use Shasoft\Console\Console; //      Console::color('red')->bgcolor('green')->write('    ')->enter(); //      Console::color('green')->bgcolor('red')->writeln('    '); //      Console::color('red')->bgcolor('white')->write('     ')->reset()->writeln('    '); 

المسافة البادئة


للعمل مع المسافة البادئة ، استخدم دالة المسافة البادئة ( قيمة المسافة البادئةالقيمة المطلقة ]) - إذا تم تحديد المعلمة الثانية وكانت = صواب ، فإن المسافة البادئة مطلقة. خلاف ذلك ، المسافة البادئة هي النسبية. للحصول على المسافة البادئة الحالية ، تحتاج إلى استدعاء الدالة المسافة البادئة () بدون معلمات.


مثال:


 use Shasoft\Console\Console; Console::indent(0,true); //  0 Console::indent(1)->color('red')->writeln(' 1'); Console::indent(3,true)->color('green')->writeln(' 3'); Console::indent(-1)->color('blue')->writeln(' 2'); 

     = 2 indent(1)  = 3     = 2 indent(-1)  = 2     = 2 indent(10)  = 10     = 2 indent(1)  = 1 

الاستنتاج: مثال على الإخراج البادئة


  • وظيفة setTabSize ( حجم علامة التبويب ) - تعين حجم علامة التبويب. الافتراضي = 3
  • وظيفة setSpace ( رمز ) - لتعيين حرف علامة التبويب. الافتراضي = '' (الفضاء)

يتم تطبيق الدالة المسافة البادئة على LINE الإخراج وسوف تتغير القيمة حتى يتم استدعاء الدالة enter (). أي هذا الكود سوف يطبع سطر المسافة البادئة 3


 Console::indent(0,true)->color('red')->indent(1)->bgcolor('blue')->indent(1)->write(' 3')->indent(1)->enter(); 

الأنماط


يمكنك تحديد الأنماط. نمط الخطأ الافتراضي هو "خطأ"


  • وظيفة SetStyle ( اسم النمط ، لون النص = فارغة ، لون الخلفية = خالية) - تعيين معلمات النمط
  • نمط الوظيفة ( اسم النمط ) - استخدم النمط المحدد

مثال للاستخدام:


 Console::indent(1,true)->style("error")->writeln('- '); 

الاستنتاج: مثال على الأسلوب


تسجيل


هناك وظائف خاصة لتسجيل التحكم.


  • وظيفة setLogLevel ( قيمة $ = فارغة) - ضبط / الحصول على مستوى التسجيل العالمي. الافتراضي = 0
  • دالة logLevel ( قيمة $ = فارغة) - ضبط / الحصول على مستوى التسجيل. الافتراضي = 0

يتم عرض القيم باستخدام وظيفة الكتابة () فقط إذا كان مستوى التسجيل الحالي أقل من مستوى التسجيل العام.


مثال:


 Console::setLogLevel(0)->logLevel(1)->writeln(' ,     = 1   0'); Console::setLogLevel(2)->logLevel(1)->writeln(',     = 1  - 2'); Console::setLogLevel(2)->logLevel(3)->write('   ')->logLevel(1)->write('  ')->enter(); 

السكر النحوي


من أجل عدم كتابة اللون ("الأحمر") -> يمكن كتابة bgcolor ("الأخضر") في شكل قصير


 Console::red()->bg_green()->writeln('     .'); 

يمكن تعيين لون الخلفية بواسطة الوظيفة دون تسطير. ومع ذلك ، فهي تفصل اللون بصريًا عن البادئة ، وهي في رأيي مريحة للغاية.


صفحة المكتبة


محدث : بما أنهم أشاروا إلى خطأ في اسم دالة التعريف بدلاً من المسافة البادئة ، فقد أصلحته حتى لا أحرج أولئك الذين يعرفون اللغة الإنجليزية جيدًا :)

Source: https://habr.com/ru/post/ar432242/


All Articles