Подтвердить что ты не робот

Как использовать класс 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

4b9b3361

Ответ 1

Вы можете использовать include/include_once или require/require_once

require_once('class.php');

В качестве альтернативы используйте автозагрузку добавив к page.php

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

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

В нем также добавляется функция __autoload в lib, которую вы включаете в каждый файл, например utils.php.

Существует также этот пост, который имеет хороший и отличный подход.

Эффективные стратегии автоматической загрузки и именования PHP

Ответ 2

В этом случае, похоже, вы уже включили файл где-нибудь. Но для файлов классов вы должны "включить" их с помощью require_once, чтобы избежать такого рода вещей; он не будет включать файл, если он уже был. (И обычно вы должны использовать require[_once], а не include[_once], разница в том, что require приведет к фатальной ошибке, если файл не существует, вместо того, чтобы просто выдавать предупреждение.)

Ответ 3

Используйте include_once вместо.
Эта ошибка означает, что вы уже включили этот файл.

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

Ответ 4

Используйте include("class.classname.php");

И класс должен использовать <?php //code ?> not <? //code ?>