سؤال

أنا أستخدم PHP 5 الآن وأنا متحمس لاستخدام OOP في PHP 5. واجهت مشكلة. حصلت على عدد قليل من الفصول ووظائف قليلة بداخلها. تتطلب الوظائف القليلة أن يتم تمرير وسيطات وهي كائن من تلك الفئات التي كتبتها بنفسي. الحجج لم تكتب بدقة لاحظتها. هل هناك طريقة لجعلها مكتوبة بدقة حتى أتمكن من استخدام Intellisense في وقت الترجمة؟

مثال:

class Test
{
   public $IsTested;

   public function Testify($test)
   {
      //I can access like $test->$IsTested but this is what not IDE getting it
      //I would love to type $test-> only and IDE will list me available options including $IsTested
   }
}
هل كانت مفيدة؟

المحلول

حسنًا ، يمكنك استخدام اكتب التلميح لفعل ما تريد:

public function Testify(Test $test) {

}

إما ذلك ، أو docblock:

/**
 * @param Test $test The test to run
 */

يعتمد ذلك على IDE ، وكيف تلتقط تلميحات النوع ... أعرف أن NetBeans ذكي بما يكفي لالتقاط نوع النوع Testify(Test $test) ودعك تذهب من هناك ، لكن بعض المعرفات الأخرى ليست ذكية ... لذلك يعتمد حقًا على IDE الخاص بك والتي ستجلب لك الإكمال التلقائي ...

نصائح أخرى

كنت سأعطي "رقم" بسيط الإجابة ، ثم وجدت القسم على اكتب التلميح في مستندات PHP.

أعتقد أن هذا يجيب على ذلك.

<?php
class Test
{
   public $IsTested;

   public function Testify(Test $test)
   {
      // Testify can now only be called with an object of type Test
   }
}

لست متأكدًا من أن Intellisense يعرف عن التلميح النوع. كل هذا يتوقف.

$test ليس متغير الطبقة. ربما تريد $this?

$this->IsTested;

أو

public function Testify(Test $test)
{
   $test->IsTested;
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top