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