假设我有两个文件 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
答案 0 :(得分:56)
您可以使用include
/ include_once
或require
/ 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
函数。
这篇文章也有一个不同的方法。
答案 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
方法来继承该文件中的类并重用功能