Я предлагаю вам использовать метод оценки важности функций. Существует много разных способов проверить важность функций. Поначалу, на мой взгляд, лёгким является классификатор Random Forest. Эта модель имеет встроенную оценку важности функций во время обучения, основанную на ошибке «из пакета». Древовидные классификаторы должны оценивать прирост информации после получения значения функции в процессе обучения.
Вы также можете проверить важность функции, проверив оценку модели, изменив набор данных, то есть используя стратегию обратной ликвидации.
Вы также можете использовать PCA или статистические тесты. Наконец, вы также можете найти зависимость между функцией, чтобы удалить из вашей функции данных, которые не предоставляют достаточно информации.
__CLASS__
всегда возвраты название класса, в котором это использовалось, таким образом, это не много справки со статическим методом. Если бы метод не был статическим, то Вы могли бы просто использовать ($this) get_class . например,
class Action {
public function n(){
echo get_class($this);
}
}
class MyAction extends Action {
}
$foo=new MyAction;
$foo->n(); //displays 'MyAction'
Теперь, когда PHP 5.3 выпущен, можно использовать последние статические связывания , которые позволяют Вам разрешить, что целевой класс для статического метода заходит во время выполнения скорее чем, когда это определяется.
, В то время как функция не представляет новую волшебную константу, чтобы сказать Вам имя класса, Вас позвонили через, это действительно обеспечивает новую функцию, get_called_class () , который может сказать Вам название класса, статический метод был призван. Вот пример:
Class Action {
public static function n() {
return get_called_class();
}
}
class MyAction extends Action {
}
echo MyAction::n(); //displays MyAction
Нет никакого способа, в доступных версиях PHP, сделать то, что Вы хотите. Решением Paul Dixon является единственное. Я имею в виду, пример кода, поскольку последняя функция статических связываний, о которой он говорит, доступна с PHP 5.3, который является в бета-версии.
It's not the ideal solution, but it works on PHP < 5.3.0.
The code was copied from septuro.com
if(!function_exists('get_called_class')) {
class class_tools {
static $i = 0;
static $fl = null;
static function get_called_class() {
$bt = debug_backtrace();
if (self::$fl == $bt[2]['file'].$bt[2]['line']) {
self::$i++;
} else {
self::$i = 0;
self::$fl = $bt[2]['file'].$bt[2]['line'];
}
$lines = file($bt[2]['file']);
preg_match_all('/([a-zA-Z0-9\_]+)::'.$bt[2]['function'].'/',
$lines[$bt[2]['line']-1],
$matches);
return $matches[1][self::$i];
}
}
function get_called_class() {
return class_tools::get_called_class();
}
}