У меня есть функция, как это:Проверьте все параметры для данной функции принадлежат к одному классу
// merge - merge two or more given trees and returns the resulting tree
function merge() {
if ($arguments = func_get_args()) {
$count = func_num_args();
// and here goes the tricky part... :P
}
}
я могу проверить, если все приведенные аргументы относятся к одному типу/классу (класс, в этом случае), используя такие функции, как get_class()
, is_*()
или даже ctype_*()
, но это работает (насколько я понимаю) на уровне одного элемента.
Что бы я хотел сделать, это нечто похожее на функцию in_array()
, но сравнение класса всех элементов в массиве, поэтому я бы сделал что-то вроде in_class($class, $arguments, true)
.
я мог бы сделать что-то вроде этого:
$check = true;
foreach ($arguments as $argument) {
$check &= (get_class($argument) === "Helpers\\Structures\\Tree\\Root" ? true : false);
}
if ($check) {
// continue with the function execution
}
Так что мой вопрос ... есть определенная функция для этого? Или, по крайней мере, лучший/более элегантный способ сделать это?
get_object_vars или get_class_vars возможно? http://php.net/manual/en/function.get-object-vars.php –
Что именно вы хотите сделать? – NullPointer
Нет, мне нужно получить имя класса для каждого аргумента и выполнить проверку против него. Эти два метода будут раскрывать каждое свойство аргумента ('$ attributes' в моем случае), но это не сработает: P –