Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用另一个文件中的PHP类?_Php - Fatal编程技术网

如何使用另一个文件中的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

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

<?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');