Вопрос

Теперь я использую 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