0

以下のコードを 1 行に連結しようとしました。純粋に、それができるかどうかを確認するための実験用です。

これは動作する元のコードです。

$dom = new DomDocument();
$dom->loadHtml($html);
$xpath = new DomXPath($dom);

ただし、連鎖すると、これはエラーを返します。

$xpath = new DomXPath((new DomDocument())->loadHtml($html));

エラーは次のとおりです。

Catchable fatal error: Argument 1 passed to DOMXPath::__construct() must be an instance of DOMDocument, boolean given

この種の連鎖が PHP 5.4.x で許可されている場合、期待どおりに動作しないのはなぜですか?

4

1 に答える 1

0

エラーは、実際には完全にそれを示しています。loadHtml は Bool (true/false) を返しました。戻り値についてはマニュアルを確認してください。

エラー:Catchable fatal error: Argument 1 passed to DOMXPath::__construct() must be an instance of DOMDocument, boolean given

コード:

$xpath = new DomXPath((new DomDocument())->loadHtml($html));
//                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//                     Argument 1, that returned a bool.
于 2013-06-26T20:29:24.857 に答える