私はDomDocumentを使ってHTMLページにアクセスし、オブジェクトに変換しますが、別のタグでノードを検索する必要があるたびに呼び出されます。私は、ロジック名をパラメータとして持つメソッドを必要としますが、各ロジックには異なる数のパラメータがあります。foreachでクリーンコードでメソッドを呼び出す
public function foo(){
$this->findTag('bar', $parameters);
}
public function findTag($logic, $parameters){
foreach ($this->dom->getElementsByTagName($this->tag) as $node) {
$this->$logic($node, $parameters);
}
}
public function logic1($node, $foo, $bar){
//something with $foo and $bar
}
public function logic2($node, $fooBar){
//something with $fooBar
}
これは悪いアプローチですか?このforeachを、別のタグを使用して、DomObjectからの情報が必要なときに常に呼び出される一意の関数にするにはどうすればよいですか。 @JustOnUnderMillionsコメントの後
作品
class pei
{
public function classe($nome)
{
$this->findTag('logic1', $nome);
}
public function classe2($porta, $janela)
{
$this->findTag('logic2', $porta, $janela);
}
public function findTag($logic, ...$parameters)
{
$array = [1, 2, 3, 4];
print_r($parameters);
foreach ($array as $node) {
$this->$logic($node, $parameters);
}
}
public function logic1($node, $nome)
{
print_r($node);
print_r($nome);
}
public function logic2($node, $porta)
{
print_r($node);
print_r($porta[0]);
print_r($porta[1]);
}
}
(new pei)->classe('pablito');
(new pei)->classe2('janela1', 'janela2');
これは、これをコーディングするクリーン/ドライストラテジーのですか?私は重複していくつかの問題の後で学びたい。
ここ
PHPバージョン?あなたは 'Variadic関数'という言葉を知っていましたか?http://php.net/manual/en/functions.arguments.php#functions.variable-arg-listのように 'public function logic1($ node、... $ args)' '$ this-> $ logic($ node、... $ parameters);' – JustOnUnderMillions
という呼出しで私にはうまく見えます。通知やエラーはなく、コードは正常に動作していますか? –
@JustOnUnderMillionsこの作品。これは実際にこれをコード化する最もクリーンな/乾いた方法ですか?私は重複していくつかの問題の後でこれを学ぶ必要があります! –