简单 HTML Dom 的两个实例

Two Instances of Simple HTML Dom

我目前正在使用 php include 将两个文件源到网页上。

两个不同的文件说 1.php 和 2.php 有两个不同的实例使用 simplehtmldom。

问题出在 2.php 包含在网页上时,在其位置显示以下错误。

Fatal error: Cannot redeclare file_get_html() (previously declared in /home/northsho/public_html/w/pages/simple_html_dom.php:70) in /home/northsho/public_html/w/pages/simple_html_dom.php on line 85

编辑:

进一步说明。

master.php(包括1.php和2.php)

1.php 和 2.php 都使用 simple_html_dom.php

# FileA: simple_html_dom.php

if(!class_exists('simple_html_dom')){
    class simple_html_dom{
        // ...
    }
}

# FileB:include/require 'prefix_path/'.'simple_html_dom.php'

使用此结构,尽管您可以不包含这 2 个文件并将内容移动到函数中并将 URL 作为参数传递

master.php

<?php
include 'simple_html_dom.php';

include '1.php';
include '2.php';

1.php

<?php
$html = file_get_html('http://example.domain.com');

//do your job

//destroy the object at the end
$html->clear(); 
unset($html);

2.php

<?php
$html = file_get_html('http://anotherexample.domain.com');

//do your job

//destroy the object at the end
$html->clear(); 
unset($html);

master.php 使用函数而不是包含 2 个其他文件

<?php
include 'simple_html_dom.php';

function doMyJob($url){
    $html = file_get_html($url);

    //do the actual job
    $result = $html->plaintext;

    $html->clear();
    unset($html);

    return $result;
}

//call the function
print doMyJob("http://example.com");