Включенный класс внутри другого класса не объявляется переполнением стека

У меня есть следующая __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

Решение

Лучшее решение — использовать автозагрузку.

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

Теперь, когда вы попросите новый класс, он будет загружен автоматически.

Попробуй это.

2

Другие решения

Вы включили эти классы, используя 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(...);
...

?>
1

По вопросам рекламы [email protected]