如何使用其他文件中的PHP类

时间:2013-01-16 03:12:29

标签: php

假设我有两个文件 class.php page.php

class.php

<?php 
class IUarts {
    function __construct() {
        $this->data = get_data('mydata');
    }
}
?>

这是一个非常具有实际意义的例子,但我想说我想使用:

$vars = new IUarts(); 
print($vars->data);`

在我的page.php文件中;我该怎么做呢?如果我做include(LIB.'/class.php');它会对我大吼大叫并给我Fatal error: Cannot redeclare class IUarts in /dir/class.php on line 4

5 个答案:

答案 0 :(得分:56)

您可以使用include / include_oncerequire / require_once

require_once('class.php');

或者,使用autoloading 加入page.php

<?php 
function __autoload($class_name) {
  require_once $class_name . '.php';
}

$vars = new IUarts(); 
print($vars->data);    
?>

它还可以在您包含在__autoload等每个文件中的库中添加utils.php函数。

这篇文章也有一个不同的方法。

Efficient PHP auto-loading and naming strategies

答案 1 :(得分:8)

在这种情况下,您似乎已将文件包含在某处。但是对于类文件,你应该使用require_once来“包含”它们以避免这种情况;如果文件已经存在,它将不包括该文件。 (而且您通常应该使用require[_once],而不是include[_once],区别在于require如果文件不存在会导致致命错误,而不仅仅是发出警告。)< / p>

答案 2 :(得分:5)

请改用include_once 此错误表示您已包含此文件。

include_once(LIB.'/class.php');

答案 3 :(得分:0)

使用include("class.classname.php");

课程应该使用<?php //code ?> not <? //code ?>

答案 4 :(得分:0)

使用

require_once(__DIR__.'/_path/_of/_filename.php');

这也将有助于从不同的文件夹导入文件。 尝试使用extends方法来继承该文件中的类并重用功能