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