Как использовать phpDoc с перегруженными методами?

Просто дополнительный к другим точкам; если Вы хотите получить доступ к грязному объему памяти, рассматриваете x64 - но знаете, что максимум единственный размер объекта - все еще 2 ГБ. И потому что ссылки больше в x64, это означает, что Вы на самом деле становитесь меньшими максимальный размер массива/списка для ссылочных типов. Конечно, к тому времени, когда Вы поражаете тот предел, Вы, вероятно, делаете вещи неправильно так или иначе!

Другие опции:

  • файлы использования
  • используют базу данных

(очевидно, у обоих есть различие в производительности по сравнению с незавершенной памятью)

Обновление: В версиях.NET до 4,5, максимальный размер объекта составляет 2 ГБ. От 4,5 вперед можно выделить большие объекты, если gcAllowVeryLargeObjects включен. Обратите внимание, что предел для string не затронут, но "массивы" должны покрыть "списки" также, так как списки поддерживаются массивами.

13
задан Tom Pažourek 14 November 2011 в 16:33
поделиться

2 ответа

Поскольку вы разрешаете аргументы переменной длины, я могу сделать это двумя способами.

Я бы просто перечислил разрешенные аргументы и параметры.

/**
 * @param mixed $arg1 ... description
 * @param mixed $arg2 ... description
 * @param mixed $arg3 ... description
 */
 public function __construct() {}

Или я бы просто предоставил объяснение с некоторыми examples.

/**
 * Explanation of different expected argument combinations.
 */
public function __construct() {}

Другой альтернативой, поскольку только один из примеров имеет более одного аргумента, было бы просто определить аргументы в сигнатуре метода, сделав последние 2 необязательными. Примерно так:

/**
 * @param mixed $arg1 ...
 * @param int $arg2 ...
 * @param int $arg3 ...
 */
public function __construct($arg1, $arg2 = null, $arg3 = null) {}
4
ответ дан 1 December 2019 в 20:30
поделиться

Я не знаю элегантного способа сделать это с помощью phpDoc. Форматирование комментариев и API phpDoc основано на формате Javadoc . Javadoc не имеет набора функций для поддержки этого, потому что в java, если вы хотите, чтобы метод имел переменное количество аргументов, вы повторно объявляете прототип метода для каждого варианта.

public double foo() {
}

public double foo(double my_param) {        
}

Итак, я предпочитаю делать что-то как

/**
 * My General description
 * 
 * Here explain what each argument combination can do
 * @param mixed $arg1 can be array, string, hex as string, or int 
 * @param int $arg2 if arg1 is int, then this is etc, otherwise optional 
 * @param int $arg3 if ar1 is int, then this is etc, otherwise optional
 */

, но это может не работать с различными инструментами автоматической документации.

Способ, согласно Хойлу, для этого можно найти на сайте phpDoc .

1
ответ дан 1 December 2019 в 20:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: