функция - как узнать ее определение?

Burunduk-13

[CBT], Старожил РНРClub'a
функция - как узнать ее определение?

Здравствуйте, господа профессионалы.
Есть такая проблема: надо узнать, как была определена функция, какие ей параметры передаются.
просьба не посылать в мануал и почитать дальше. В мануале каждый может прочитать описание функции, даже я. Теперь подробнее:
Программирую на PHP под ZendStudio. Там есть такая фишка, как CodeCompletion. Так вот список функций, которые мне предлагает Zend, подгружаются из специального файла (phpFunctions.php), где в PHP стиле идет определение функций, классов. Но этот файлик не обновлялся с PHP4.2.1, а новые-то функции появились, и захотелось обновить этот файл.
Перечитал почти весь мануал по PHP, и нашел только функции, которые могут мне вернуть массив со всеми функциями, классами, но не их определениями.
Для каждой функции храниться следующая информация:
^^^^^^^^^^^^^^^^^^^
/**
* @return array
* @param input array
* @param search_value mixed[optional]
* @desc Return just the keys from the input array, optionally only for the specified search_value
*/
function array_keys($input, $search_value = null) {};
^^^^^^^^^^^^^^^^^^^
Хотелось бы сгенерировать такой же файл. Можно без @desc.
Поискал по сайту Zend, в google по названию этого файла и ничего по этой теме не нашел.
Так вот вопрос: можно ли узнать, как была определена функция?
Есть два аргумента, которые дают надежду, что можно:
1. Существующий файл был сгенерирован PHP.
2. PHP знает определение(хотя бы кол-во параметров, и опциональных) всех функций, так как может выдать "Warning: Wrong parameter count for function_name()..."
и один против:
1. PHP не знает типов переменных, а в файле они указаны. :(

что думают профессионалы по этому поводу?
 

young

Новичок
PHP:
function my_cool($value) {
   return $value;
}
1. Параметр какого типа передается функции my_cool? параметр какого типа передается стандартным функциям is_set, empty?
2. Сколько параметров передается стандартной функции min ?
 

Burunduk-13

[CBT], Старожил РНРClub'a
>1. Параметр какого типа передается функции my_cool? параметр какого типа передается стандартным функциям is_set, empty?
bool isset ( mixed var [, mixed var [, ...]]) (c)manual
как минимум один параметр любого типа...
>2. Сколько параметров передается стандартной функции min ?
number min ( number arg1, number arg2 [, ...]) (c)manual
Сколько параметров? - как минимум два.
 

young

Новичок
Тогда так и запишем:

1) mixed - универсальное слово, которым будем отпределять все параметры
2) мы можем посчитать минимальное количество параметров, которые требует функция, но не более того. Так и будем писать: Минимум N параметров, точного количества не знаем.

Попробую помочь тебе примерами

1. Сколько параметров принимает функция:
PHP:
<?php
function printme () {
	for ($ndx = 0; $ndx < func_num_args(); ++$ndx) {
		$output .= func_get_arg ($ndx);
	}
	print $output;
}
?>
2. Параметр какого птипа принимает функция
PHP:
<?php
function some ($var) {
  echo "function some";
}
?>
 

tony2001

TeaM PHPClub
>1. Существующий файл был сгенерирован PHP.
http://cvs.php.net/co.php/phpdoc/funcsummary.txt?r=1.20

>2. PHP знает определение(хотя бы кол-во параметров, и опциональных) всех
> функций, так как может выдать "Warning: Wrong parameter count for >function_name()..."
нет, это проверяется в Сишном коде, РНР не "знает" сколько у функции аргументов, там просто стоит if().

>1. PHP не знает типов переменных, а в файле они указаны.
см. ссылку.
 

Burunduk-13

[CBT], Старожил РНРClub'a
2young
Не, я понимаю, что можно придумать много примеров функций, для которых Невозможно правильно указать кол-во параметров, но такие функции меня не интересуют, так как мне нужен файл с теми функциями, которые предусмотрены PHP и которые документированы..
я давно догадывался, что все что я хочу можно будет сделать с помощью документации...
>tony2001
большое спасибо... это то, что я искал, но долго не мог найти.

еще раз спасибо tony2001 и young за помощь.
 

Burunduk-13

[CBT], Старожил РНРClub'a
кстати, вопрос остаеться открытым, так как использую некоторые модули, которые не документированы в стандартном мануале PHP...
 

Larson

Новичок
У тебя исходники этих модулей есть? Можно там посмотреть - открываем исходник - и находим строки, похожие на
PHP_FUNCTION(my_first_function) - это PHP функции. Плюс читаем мануал ZEND API.
 

tony2001

TeaM PHPClub
Larson:
и дальше все равно руками, не будет же он парсер Сишного кода писать.
 

Larson

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

Burunduk-13

[CBT], Старожил РНРClub'a
>и дальше все равно руками, не будет же он парсер Сишного кода писать.
парсер писать не буду.. не смогу, так как для меня неочевидно, как будет работать этот парсер. Не увидел общего способа определения параметров. И руками тоже не хочеться.

IMHO, самое рациональное решение, после всего прочитанного:
1. Поискать документацию и извлечь всю информацию оттуда.
2. При ее отсутствии, и наличия исходников и очень большого желания -> копаться там руками.
первый пункт наиболее удовлетворяет моим требованиям, так как во время кодинга мне только надо коротенькие вырезки из мануала. А второй пункт похож на написание собственного мануала (не очень веселое занятие :))
 

hayk

Новичок
Burunduk-13
Скорее всего для генерации phpFunctions.php парсятся исходники документации. Ведь там уже все описано и расписано.
 

Burunduk-13

[CBT], Старожил РНРClub'a
Я вообще так и думаю. кстати, а где можно скачать "исходники документации", точнее не где, так как знаю, что на cvs.php.net. Проблема в том, что по Documentation howto надо качать очень много различных файлов, а хочеться только один-два. Можно ли скачать исходники документации в виде одного файла?.. или одной коммандой, но не лазя по сайту и выбирая каждый файл по отдельности.. многовато их там.
 

Burunduk-13

[CBT], Старожил РНРClub'a
>Можно ли скачать исходники документации в виде одного файла?.. или одной коммандой,
все. не надо.. помогла комманда
cvs -d :pserver:[email protected]:/repository checkout phpdoc
 
Сверху