Написание скриптов.

M
На сайте с 23.01.2009
Offline
12
394

Всем привет!!!

Решил по писать скрипты на PHP, MySQL, JS, пока за отзыв, а там видно будет.

Все предложения в ICQ или сюда, только не в личку.

написание скриптов... icq 377816882
HraKK
На сайте с 02.03.2009
Offline
128
#1

Напишите мне функцию, которая принимает как параметр имя класса, а возвращает массив всех методов класса которые небыли переопределены


class a
{
function a(){}
function b(){}
function c(){}
}
class b extends a
{
function b(){}
}
class c extends b
{
function c(){}
}

var_dump( check_func( 'c' ) );

Должно вывести только метод a() так как b и c - переопределены. Уровни наследования не ограниченны могут быть хоть 1000.

я гарант (/ru/forum/493343) уже не оказываю данные услуги, извините.
M
На сайте с 23.01.2009
Offline
12
#2

Сдаюсь, сдаюсь … Задача хорошая, но пока для меня не решаема, все что смог выкладываю , хотя … :) может и рыл не туда.


function check_func( $v )
{
$v_c = new $v();
$m = get_class_methods( $v );
$v_p = get_parent_class( $v_c );
for( $i = 0; $i < count( $m ); $i++ )
{
echo 'class ' . get_class( $v_c ) . ' obj ' . $m[$i] . ' - ';
echo ( $v_c instanceof $m[$i] ) ? 'true' : 'false';
echo '<br>';
}
if ( is_subclass_of( $v_c, $v_p ) )
{
echo '<br>';
check_func( $v_p );
}
unset( $v_c );
}

В общем , спасибо, жду новых предложений

PY
На сайте с 22.08.2008
Offline
84
#3

Ага, интересная задачка.

	function check_func($class_name){

$result = array();
$temp = array();
$all_methods = get_class_methods($class_name);
foreach($all_methods as $m){
$temp[$m] = 1;
}
while($parent = get_parent_class($class_name)){
$methods = get_class_methods($class_name);
foreach($methods as $method){
$reflect = new ReflectionMethod($class_name, $method);
$decl_class = $reflect->getDeclaringClass();
if($decl_class->name == $class_name){
$temp[$method] = 0;
}
}
$class_name = $parent;
}
foreach($all_methods as $m){
if($temp[$m] != 0){
$result[] = $m;
}
}
return $result;
}

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий