Типичным путем это обрабатывается в C#, поскольку stephen упомянутый должен перегрузить метод. Путем создания нескольких версий метода с различными параметрами Вы эффективно создаете дополнительные параметры. В формах с меньшим количеством параметров Вы обычно называли бы форму метода со всеми параметрами, устанавливающими Ваши значения по умолчанию в вызове к тому методу.
Если вы хотите манипулировать DOM, например, Jquery, PHPQuery - это то, что вам нужно.
http://code.google.com/p/phpquery/
Простой пример что вы можете с ним сделать.
// almost everything can be a chain
$li = null;
$doc['ul > li']
->addClass('my-new-class')
->filter(':last')
->addClass('last-li');
Взгляните на класс DOMXPath
в PHP. Он использует XPath, поэтому вам нужно прочитать синтаксис XPath, если вы с ним не знакомы. Есть документация по MSDN или W3Schools , или вы можете прочитать спецификацию W3 , если вы особенно смелы.
Чтобы решить вашу примерную проблему: // куб [@currency]
- это запрос XPath, который выбирает все элементы в документе с атрибутом валюты. Использование этого с классом DOMXPath
будет выглядеть так:
$xpath = new DOMXpath($myDomDocument);
$cubesWithCurrencies = $xpath->query('//cube[@currency]');
$ cubesWithCurrencies
теперь DOMNodeList
, который можно перебирать.
XPath - это именно то, что вы ищете, вот неплохой список возможных селекторов