如何使用另一个文件中的PHP类?
假设我有两个文件class.php和page.php如何使用另一个文件中的PHP类?,php,Php,假设我有两个文件class.php和page.php <?php class IUarts { function __construct() { $this->data = get_data('mydata'); } } ?> class.php <?php class IUarts { function __construct() { $this
<?php
class IUarts {
function __construct() {
$this->data = get_data('mydata');
}
}
?>
class.php
<?php
class IUarts {
function __construct() {
$this->data = get_data('mydata');
}
}
?>
在my page.php文件中;我该怎么做呢?如果我做了
include(LIB.'/class.php')
它对我大喊大叫,并给了我致命错误:无法在第4行的/dir/class.php中重新声明类IUarts
使用包含一次
。此错误表示您已包含此文件
include_once(LIB./class.php')代码>在本例中,您似乎已经在某个位置包含了该文件。但是对于类文件,您应该使用require\u once
真正地“包含”它们,以避免此类事情;如果文件已被删除,则不会包含该文件。(您通常应该使用require[\u once]
,而不是include[\u once]
,区别在于require
如果文件不存在,将导致致命错误,而不仅仅是发出警告。)您可以使用/或/
或者,使用
通过添加到page.php
<?php
function my_autoloader($class) {
include 'classes/' . $class . '.class.php';
}
spl_autoload_register('my_autoloader');
$vars = new IUarts();
print($vars->data);
?>
它还可以在lib中添加\uuu autoload
函数,您可以将该函数包含在每个文件中,如utils.php
也有这篇文章,有一个很好的和不同的方法
使用include(“class.classname.php”)代码>
类应该使用而不是使用
require_once(__DIR__.'/_path/_of/_filename.php');
这也将有助于从不同文件夹中导入文件。
尝试扩展
方法继承该文件中的类并重用函数您所说的第二件事不是针对这个问题的,也不是正确的
只是较新的语法,我相信它可以在php.ini
中启用或禁用。(很抱歉再次提起这一点)我想他说的是,并非所有服务器上都启用速记版本,有时您可能会使用无法修改php.ini的网络托管环境,因此如果您使用“\uuu autoload()不推荐使用,请改为使用spl\u autoload\u register()”更安全、更兼容由于这个结果在谷歌上相当高,也许有人应该编辑它并更清楚地指出这一点?这个被接受的答案并不是直接针对问题和显示的错误消息(由于同一类的多次包含)。不投反对票,因为它仍然是有用和正确的。
require_once(__DIR__.'/_path/_of/_filename.php');