我有一个自制类的__construct;
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,但是我已经在页面中包含了这些类,我不确定,但是我必须将这些类传递给这个类而不是仅仅调用它们? 如果是,我该怎么做?
答案 0 :(得分:2)
更好的解决方案是使用自动加载。
function __autoload($class_name) {
require_once $class_name . '.php';
}
现在,当您要求新课程时,它将自动加载。
试试这个。
答案 1 :(得分:1)
您是否使用require
,include
或自动加载功能添加了这些课程?
如果还没有,请确保已加载定义了这些类的文件。
现在,我们需要检查命名空间。
在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(...);
...
?>