PhpStorm 2020.2: أنواع PHP 8 المتسلسلة ، محرك تدفق التحكم الجديد ، طلبات سحب GitHub ، OpenAPI





مرحبا هبر! يسعدنا تقديم الإصدار الرئيسي الثاني من PhpStorm هذا العام!



يوجد أسفل الخفض تحليل مفصل لجميع التغييرات الملحوظة والميزات الجديدة. حذر - الكثير من الصور.



أنواع الاتحاد في PHP 8



ستحتوي PHP 8 على العديد من الميزات الجديدة لدرجة أنها لغة جديدة إلى حد ما. بدأنا في تقديم الدعم للثمانية مبكرًا وكانت الميزة الكبيرة الأولى هي الأنواع المدمجة. يمكن استخدام



الأنواع المتسلسلة في T1|T2|...أي مكان يمكن فيه تحديد الأنواع الآن: في الوسائط ، والخصائص ، وقيم الإرجاع. في هذه الحالة ، يمكن أن يأخذ المتغير أحد الأنواع المدرجة.



في الواقع ، تم استخدام الأنواع المتسلسلة في PHPDoc لفترة طويلة ، ولكن الآن سيقوم المترجم الفوري بفحصها في وقت التشغيل.



تبديل نسخة اللغة



لمعرفة كل الاحتمالات ، يمكنك تبديل إصدار اللغة يدويًا إلى PHP 8 في Languages ​​& Frameworks | PHP | مستوى لغة PHP .



أو إذا كان الرمز يحتوي بالفعل على استخدام الميزات الجديدة ، فيمكنك التبديل باستخدام الإصلاح السريع (Alt + Enter).



وإذا تم تحديد إصدار PHP في composer.json ، فسيقوم PhpStorm بسحبه تلقائيًا.







تحويل PHPDoc إلى أنواع مجمعة أصلية



يمكنك استدعاء حل سريع (Alt + Enter) لعلامة PHPDoc التي تحتوي على نوع مدمج.







إزالة ملفات PHPDoc



إذا احتوى PHPDoc على إقرارات نوع فقط ، فيمكن الآن إزالته كإصلاح سريع زائد (Alt + Enter).







هل يمكن اعتبار هذا الحذف دائمًا آمنًا ويتم إجراؤه تلقائيًا قبل الالتزام؟ نحن نفكر في إضافة مثل هذه الميزة.


اكتب التحقق



اعتادت PhpStorm أن تكون قادرة على تحليل الأنواع والعثور على الانتهاكات عن طريق المعلومات من علامات PHPDoc. مع الإعلانات الأصلية ، توسعت هذه الاحتمالات.



يتم إجراء عمليات التحقق لكل شيء: الخصائص والحجج والقيم المرجعة.







هذا مفيد بشكل خاص في التعليمات البرمجية المعقدة حيث لا تكون الانتهاكات واضحة على الفور.







النوع الزائف خطأ



يمكن أن تعود بعض الوظائف القديمةfalse عند حدوث خطأ. على سبيل المثال ، تصرف strpos()، array_search()و 310 ميزات قياسية أخرى.



في هذه الحالة ، سيكون من الممكن تحديد نوع الإرجاع على أنه متسلسل ، على سبيل المثال int|bool، ولكنه في الحقيقة trueلن يكون موجودًا أبدًا.



لمثل هذه الحالات ، تم إدخال نمط زائف false. يمكن استخدامه فقط في الصلات. وإلا فإن PhpStorm سوف يبرز الكود غير الصحيح.







الأنواع المكررة والمكررة



العديد من التركيبات في نقابات النوع ممنوعة أو ببساطة غير ضرورية. على سبيل المثال:



  • bool|false- لأن خطأ مدرج في bool؛
  • Foo|Fooأو int|string|INT- التكرار.
  • object|User- objectيحتوي عن علم على كل شيء آخر ؛
  • iterable|arrayأو iterable|Traversable- iterableتشمل المصفوفة والقابلة للنقل ؛
  • void - يمكن استخدامها فقط في القيمة المعادة وفقط في حد ذاتها ؛
  • falseأو null- فقط كجزء من جمعية.




ستسلط PhpStorm الضوء على كل هذه الانتهاكات.







أنواع لاغية



تعتبر الصيغة القديمة ?Typeالآن اختصارًا لـ Type|null.



ولكن ?لا يمكن استخدام الاختصار c في الصلات بسبب وجود غموض لا يمكن حله.



لمثل هذه الحالات ، PhpStorm لديه حل سريع (Alt + Enter).







تغيير الأنواع بالميراث



هناك قاعدتان للطرق:



نوع المعلمة مخالف ، أي يمكن تمديده.







نوع الإرجاع متغير ، أي أنه يمكن تضييقه فقط.







لا يهم ترتيب الأنواع ، وهو Type1|Type2مكافئ Type2|Type1.



لا يمكن تغيير

نوع الخصائص يجب تقليل نوع الخاصية الموروثة إلى الأصل ، على سبيل المثال:







محرك جديد للتحكم في التدفق



أتاح تحديث محرك التحكم في التدفق إمكانية إضافة عمليات فحص جديدة وإصلاح العديد من الأخطاء القديمة. نتيجة لذلك ، تفهم PhpStorm الكود بشكل أفضل.



في بعض الأماكن سيكون من الممكن ملاحظة تسليط الضوء والتحذيرات من عمليات التفتيش الجديدة. قد يتطلب بعضها انتباهك كمصادر محتملة للأخطاء. إصلاح الآخرين سيجعل الكود أكثر نظافة.



فيما يلي بعض الأمثلة على عمليات التفتيش.



المتغير دائمًا صحيح أو خطأ

مثال في ملف Parser.php من عقيدة / orm.







الشرط صحيح دائمًا

مثال في ملف FormValidator.php من symfony / form. Instanceof







النتيجة هي دائما صحيح

مثال في Logger.php ملف من أن symfony / monolog الجسر.







$thisسيكون دائما من النوعResetInterfaceلأن هذا هو أعلى في التسلسل الهرمي.







التعبير دائمًا فارغ

مثال في ملف ProcessUtils.php من symfony / عملية.







إجراء جديد: اكتب المعلومات (⌃⇧P / Ctrl + Shift + P)

يمكنك تحريك مؤشر الماوس فوق أي تعبير واستدعاء هذا الإجراء لمعرفة نوع PhpStorm الذي استنتجته للتعبير. متاح من قائمة عرض | اكتب معلومات أو عن طريق مفتاح الاختصار ⌃⇧P / Ctrl + Shift + P.







تحسينات الملحن



منذ الإصدار 2020.1 ، يمكن تنفيذ جميع الإجراءات ذات التبعيات Composer مباشرة في PhpStorm في ملف composer.json. هناك العديد من التحسينات في هذا الإصدار.



دعم المستودعات المخصصة Satis / Packagist

إذا حددت مصدرًا مخصصًا في قسم "المستودعات" ، فسيكون إكمال التعليمات البرمجية متاحًا لجميع الحزم منه. سيتم تخزين معلومات الحزمة والإصدار مؤقتًا في PhpStorm.







بالإضافة إلى ذلك ، عند تحديد إصدارات متعددة

إذا تم سرد الإصدارات مفصولة بفواصل أو أنبوب ( ||) ، فإن PhpStorm سيعمل الآن بشكل صحيح ويعرض الخيارات المتاحة.







ارتباط إلى الكود والموقع

كل حزمة في النافذة المنبثقة تحتوي على روابط لمواقع.







إعدادات أدوات جودة التعليمات البرمجية

إذا كانت قائمة التبعيات تحتوي على أدوات جودة الكود المدعومة في PhpStorm ، فسيكون هناك رمز مفتاح ربط للانتقال إلى الإعدادات.







تحسينات على أدوات جودة التعليمات البرمجية



بالمناسبة ، حول أدوات الجودة. يحتوي PhpStorm 2020.2 على بعض الإضافات المفيدة.



يمكن تشغيل Docker

Compose support PHP_CodeSniffer و PHP CS Fixer و PHP Mess Detector عبر تكوين عامل الإرساء.







قوائم استثناءات PHP_CodeSniffer

إذا كان ruleset.xmlهناك قسم مخصص "exclude-pattern"، فسيتم الآن أخذه في الاعتبار ولن يتم تحليل الملفات الموجودة على المسارات المحددة في IDE.



يمكن تشغيل التنسيق عبر مترجم عن بُعد

PHP CS Fixer و PHPCBF مع مترجم عبر SSH و Docker و Docker Compose و Vagrant وغيرها.



أدوات سطر الأوامر



يمكن تشغيل جميع البرامج النصية Symfony و Laravel Artisan و Drupal Drush و WP-CLI و Composer بسرعة كبيرة في PhpStorm دون فتح Terminal.



للقيام بذلك ، قم بإضافة الأداة المناسبة في أدوات | دعم أداة سطر الأوامر .



ثم ، بالنقر فوق ، Ctrl-Ctrlيظهر سطر تشغيل أي شيء ، حيث تتوفر جميع الأوامر مع الإكمال التلقائي.



بدءًا من هذا الإصدار ، لن تحتاج حتى إلى تهيئة أي شيء لـ Symfony و Laravel و Drush. يكفي فتح المشروع والنقر Ctrl-Ctrlوالبدء في إدخال الأمر.







️ بالنسبة إلى Laravel على نظام macOS ، artisanيجب أن يكون الملف قابلاً للتنفيذ ( chmod +x artisan).



بالإضافة إلى ذلك ، يمكن الآن تشغيل الأدوات من خلال أي مترجم فوري عن بُعد (SSH ، Docker ، Docker Compose ، Vagrant). على سبيل المثال ، يمكنك اختبار تطبيق PHP 8 الخاص بك بسرعة عن طريق إضافة مترجم Docker من صورة php:rc-cli.



إعادة بناء ديون جديدة: استخراج فئة



تبدو الفصول أنيقة ونظيفة في البداية. ثم يتم إضافة المزيد والمزيد من الأساليب والخصائص الجديدة إليهم ، وعاجلاً أم آجلاً يكون الفصل بالفعل "منتفخًا" ومتضخمًا مع المسؤوليات من جميع الجوانب.



يمكن أن يساعد هنا تخصيص مجموعة من الأساليب والخصائص ذات الصلة في فئة جديدة. هذا هو بالضبط ما تقدمه إعادة هيكلة فئة Extract Class الجديدة.



لتجربتها ، تحتاج إلى النقر داخل الفصل Ctrl+Tوتحديد استخراج الفصل . سيطالبك PhpStorm بإدخال اسم الفصل الجديد ، ويمكنك على الفور تحديد المزيد من الأساليب والفئات لاستردادها.







تعمل إعادة البناء هذه للوظائف العادية أيضًا.



والمزيد من PHP



استقصاء جديد: قد تكون الخاصية المكتوبة غير معينة



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







فحص جديد: صفيف مستخدم فقط مع حق الوصول للكتابة



مثال من ملف SchemaTool.php من العقيدة / orm. يتم تحديث







المصفوفة $pkColumnsفي الطريقة gatherColumns()، ولكن لا تتم قراءتها مطلقًا.



تخصيص المحصلات والمُحدِدات المُنشأة



يمكنك الآن تخصيص طريقة التسمية عن طريق الاختيار بين camelCase()و snake_case().



وأيضًا تخصيص الترتيب الذي يتم إضافتهم به إلى الفصل الدراسي.



كلا الخيارين متاحان في المحرر | نمط الكود | PHP في علامة التبويب "إنشاء الكود" .







الدقة الصحيحة للعديد من المشاريع في نافذة واحدة



إذا فتحت عدة مشاريع في نافذة واحدة ، فغالبًا ما ترى أخطاء في تعريف الفصل عدة مرات. وعند محاولة الانتقال إلى تعريف الفصل ، لا يزال يتعين عليك اختيار أيهما.



لا يحتوي PhpStorm 2020.2 على هذه الأخطاء ويعمل النقل كما هو متوقع.







أولوية أقل للفئات من البائع



في قائمة الإكمال التلقائي ، ستعطى الأولوية للفئات مباشرة من المشروع ، vendorوستنتقل الكيانات من المجلد وملفات PHAR إلى فئة أقل .



أضف المؤشر إلى جميع الخطوط المحددة



يضيف الإجراء الجديد Add Caret Per Selected Line مؤشرًا في نهاية كل سطر محدد ويلغي تحديده. يمكن الاستدعاء بالمفاتيح ⌥⇧G / Alt + Shift + G.







دعم كامل لطلبات سحب GitHub



ظهر دعم طلب السحب الأساسي في PhpStorm 2018.3. كانت هناك تحديثات منذ ذلك الحين ، ولكن العديد من الإجراءات لا تزال تتطلب التبديل إلى المتصفح.



في PhpStorm 2020.2 ، يمكن تنفيذ جميع أعمال طلب السحب مباشرة في IDE!







يمكنك الوصول إلى طلبات السحب من VCS | بوابة | عرض طلبات السحب ، من شريط الأدوات أو عن طريق النقر Alt+7. الأول سيكون قائمة بالطلبات المتاحة مع خيارات البحث والتصفية.



سيؤدي النقر فوق طلب سحب إلى فتح معلومات مفصلة عنه: المراجعين والعلامات والملفات التي تم تغييرها والجدول الزمني.



يمكن إجراء تدفق المراجعة بالكامل هناك. ابدأ واطلب مراجعة ، قم بالتعليق على التغييرات على مستوى الخط أو الالتزام ، قم بإرسال مراجعة ، دمج.



سيتم عرض نتائج الشيكات ، بما في ذلك تلك الواردة من CI ، ضمن الجدول الزمني.



في السابق ، لدمج طلب سحب ، كان عليك إنشاء فرع محلي. الآن ليس مطلوبًا ويمكنك الدمج بالضغط على زر.



دعم OpenAPI



يتوفر المكون الإضافي لمواصفات OpenAPI لجميع IDEs من JetBrains ويعمل بدءًا من الإصدار 2020.2. في ملفات مواصفات Open API ( openapi.yaml/ openapi.jsonو swagger.yaml/ swagger.json) ، فإنه يوفر التمييز والتعزيز والتحقق من الصحة والتنقل.



بالإضافة إلى ذلك ، تتوفر الخيارات التالية:



  • التكامل مع Swagger UI - يتم عرضه مباشرة في نافذة IDE.
  • رمز الجيل.
  • الاختلافات الهيكلية لمواصفات OpenAPI - تسمح لك باكتشاف التغييرات المهمة بسرعة.
  • رموز Gatter لإنشاء الطلبات بسرعة في عميل HTTP.
  • إكمال نقاط النهاية في عميل HTTP.
  • إعادة تسمية إعادة البناء - إذا قمت بإعادة تسمية نقطة نهاية في المواصفات ، فسيتم إعادة تسميتها تلقائيًا في طلب عميل HTTP.








أداة التفتيش الجديدة



يعرض الزاوية اليمنى العلوية للمحرر الآن عنصر واجهة مستخدم مع عدد المشكلات في الملف الحالي.



باستخدام الأسهم ، يمكنك الانتقال بسرعة إلى المشكلة التالية / السابقة (كان يمكن القيام بذلك مسبقًا باستخدام المفاتيح F2/ Shift+F2).



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



وبالنقر على عنصر واجهة المستخدم ، سيتم فتح نافذة مشاكل جديدة بها قائمة بجميع المشاكل المكتشفة في الملف.







التحكم في الإصدار



بوابة من WSL 2



يمكن لـ PhpStorm الآن استخدام WSL Git الثنائي. علاوة على ذلك ، يحدد IDE نفسه ما إذا كان WSL مثبتًا وما إذا كان Git متاحًا فيه.



الإعدادات متوفرة في التفضيلات | التحكم في الإصدار | بوابة .



️ سيعمل Git فقط مع WSL2 ، لأن Git من WSL1 غير مستقر وقد يؤدي إلى نتائج غير صحيحة من أوامر Git.



واجهة مستخدم محسنة لمقارنة الفروع



يتيح لك PhpStorm مقارنة أي فرع ومعرفة الالتزامات التي تم الالتزام بها في أحدهما أو الآخر. للقيام بذلك ، حدد أي فرع من تلك المتوفرة في نافذة VCS المنبثقة | الفروع وحدد مقارنة مع الحالي من قائمة السياق .



في PhpStorm 2020.2 ، سيتم عرض السجلات والاختلافات في الالتزام مباشرة في المحرر. يتيح ذلك عرض المزيد من المعلومات على الشاشة.







مربعات حوار الأوامر المحدثة



تمت إعادة تصميم حوارات أوامر Git Merge و Pull و Rebase وتوحيدها. تمت إضافة الخيارات المفقودة ويمكنك الآن رؤية أمر Git الكامل الذي سيتم تنفيذه.



تتوفر جميع الأوامر في VCS | بوابة .







إجراء جديد: إزالة الالتزام



يمكن الآن إزالة الالتزام المحلي الإضافي أو المؤقت مباشرة من السجل في PhpStorm. للقيام بذلك ، حدد Drop Commit من قائمة السياق في الالتزام .







إجراء جديد: دمج الالتزامات في واحد (الاسكواش)



يمكنك أيضًا دمج عدة عمليات في التزام واحد. على سبيل المثال ، قد يكون من الملائم مسح المحفوظات قبل إنشاء طلب سحب أو قبل دفع التغييرات. حدد



عدة التزامات في السجل وحدد Squash Commits ... من قائمة السياق.







لكلتا العمليتين ، يتم وراء الكواليس git rebase.



أدوات DB



يتضمن PhpStorm خارج الصندوق تقريبًا جميع ميزات DataGrip المغطاة في نظرة عامة على إصدار DataGrip 2020.2 من زملائنا.



الويب



وكالعادة ، يتم تضمين جميع التحديثات من WebStorm 2020.2 في PhpStorm أيضًا. على سبيل المثال ، باستخدام البرنامج المساعد ، يمكن استخدام Prettier كمنسق افتراضي لملفات PHP أيضًا.






يمكنك تنزيل PhpStorm 2020.2 على صفحة " ما الجديد ".



وهنا مقطع فيديو (باللغة الإنجليزية) يوضح الملامح الرئيسية للإصدار:





هذا كل هذا الوقت. شكرا على القراءة حتى النهاية! سنكون سعداء بوجود أسئلة ورغبات وتقارير أخطاء وأفكار فقط في التعليقات.



فريق JetBrains PhpStorm الخاص بك



All Articles