2016-06-02 3 views
1

У меня есть файл, которые состоят из определенных пользователем функций с именами CamelCase:PHP: Документирование списка функций

// some useful comments 
function functionOne(){ 
    return false; 
} 

// some other useful comment 
function addTwoNumbers($x,$y) 
{ 
    return 5; 
} 
... 

Я хотел бы выводить эти функции, отсортированные по имени, как

addTwoNumbers($x,$y) 
2 parameters 
Comment: some other useful comment 

functionOne() 
0 parameters 
Comment: some useful comments 

до сих пор , Я получаю список имен функций следующим образом:

include '../includes/functions.php'; 

$allFunctions = get_defined_functions(); 

$userFunctions = $allFunctions['user']; 
sort($userFunctions); 

foreach ($userFunctions as $functionName) { 
    echo $functionName. "<br>"; 
} 

Основная проблема заключается в том, что я не знаю, как отображать количество параметров каждой функции и имена переменных параметров.

Далее (но я мог бы жить с ним) имена функций отображаются только строчными буквами, поэтому я не могу их прочитать в CamelCase.

И, наконец, комментарии, конечно, не показаны. Я думал писать их в массиве $comments['functionOne']="some useful comments".

Так что моя главная проблема заключается в том, как вы получаете имена переменных и число параметров.

+0

так, пожалуйста, не делайте свою функцию имя верблюд. PHP не является Java. – Raptor

+0

В начале, проверьте [отражение api] (https://secure.php.net/manual/book.reflection.php). Но зачем вам это делать? Вы можете просто использовать [phpDocumentor] (https://phpdoc.org/). – Yoshi

+0

@Raptor Я не думаю, что достаточно оснований не использовать camelCase. Многие современные среды и библиотеки, такие как Zend Framework 2 и Symfony 2, используют camelCase для имен методов. И мне лично это нравится. – Adam

ответ

3

Чтобы получить номер и имена В параметре, вы можете использовать Reflection в PHP:

function getFunctionArgumentNames($functionName) { 
    $reflection = new ReflectionFunction($functionName); 
    $argumentNames= array(); 
    foreach ($reflection ->getParameters() as $parameter) { 
     $argumentNames[] = $parameter->name; 
    } 
    return $argumentNames; 
} 

Тогда вы будете иметь ваши имена параметров, а длина возвращаемого массива даст вам, сколько есть.


Более подробную информацию можно найти по этому поводу:

  • ReflectionClass
  • ReflectionObject
  • What is Reflection in PHP ?

    Другое общее использование отражения для создания документации. Было бы чрезвычайно трудоемко писать документацию о каждом методе каждого класса большой структуры или приложения. Вместо этого Reflection может автоматически генерировать документацию для вас. Он делает это, проверяя каждый метод, конструктор и класс, чтобы определить, что происходит и что происходит.

0

Используйте ReflectionFunction класс

, например:

$refFunc = new ReflectionFunction('preg_replace'); 
foreach($refFunc->getParameters() as $param){ 
    print $param; 
} 

ReflectionFunction класс передает информацию о функции. Подробнее http://php.net/manual/en/class.reflectionfunction.php

Смежные вопросы