簡體   English   中英

另一個類中包含的類未聲明為PHP

[英]Included class inside another class is not declared PHP

我有以下____自制類的構造;

public function __construct($ip, $user, $pass, $product) {
    $this->_ip = $ip;
    $this->_user = $user;
    $this->_pass = $pass;
    $this->_product = $product;

    $this->ssh = new Net_SSH2($this->_ip);
    if (!$this->ssh->login($this->_user, $this->_pass)) {
        return 'Login Failed';
    }
    $this->sftp = new Net_SFTP($this->_ip);
    if (!$this->sftp->login($this->_user, $this->_pass)) {
        return 'Login Failed';
    }
}

現在的問題是,它說沒有聲明Net_SSH2和Net_SFTP,但是我不確定在頁面中包括了那些類,但是我是否必須將這些類傳遞給該類而不是僅僅調用它們? 如果是,我該怎么做?

更好的解決方案是使用自動加載。

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

現在,當您要求一個新類時,它將被自動加載。

嘗試這個。

您是否使用requireinclude或autoload函數包含了這些類?

如果還沒有,請確保已加載定義了這些類的文件。

現在,我們需要檢查名稱空間。

Net_SFTP的頂部,是否有namespace [SOMETHING] 如果存在,則必須引用完全限定的類名稱,或use此類。

一個例子:

<?php

namespace VendorName\BundleName;

class Net_SFTP { 
    ....
}

?>

現在,為了使用此類,我們必須執行以下一項操作:

<?php

use VendorName\BundleName\Net_SFTP;

...
$this->ssh = new Net_SFTP(...);
...
?>

或者,直接:

<?php

...
$this->ssh = new VendorName\BundleName\Net_SFTP(...);
...

?>

暫無
暫無

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

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