簡體   English   中英

如何使用另一個文件中的 PHP 類?

[英]How to use a PHP class from another file?

假設我有兩個文件class.phppage.php

類.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

您可以使用include / include_oncerequire / require_once

require_once('class.php');

或者,通過添加到page.php來使用自動加載

<?php 
function my_autoloader($class) {
    include 'classes/' . $class . '.class.php';
}

spl_autoload_register('my_autoloader');

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

它還可以在包含在每個文件(如utils.php中的庫中添加__autoload函數。

還有這篇文章有一個很好的和不同的方法。

高效的 PHP 自動加載和命名策略

在這種情況下,您似乎已經在某處包含了該文件。 但是對於類文件,你真的應該使用require_once “包含”它們來避免這種事情; 如果已經包含該文件,它將不會包含該文件。 (並且您通常應該使用require[_once] ,而不是include[_once] ,不同之處在於,如果文件不存在, require將導致致命錯誤,而不僅僅是發出警告。)

使用include_once代替。
這個錯誤意味着你已經包含了這個文件。

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

使用include("class.classname.php");

並且類應該使用<?php //code ?> not <? //code ?> <?php //code ?> not <? //code ?>

采用

require_once(__DIR__.'/_path/_of/_filename.php');

這也將有助於從不同文件夾導入文件。 嘗試extends方法來繼承該文件中的類並重用這些函數

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM