类的对象不能转换为字符串

时间:2016-08-10 17:01:09

标签: php html oop object

我知道这是一个老问题,但我找不到答案。这是我的代码:

class SqlConnect implements connectionInterface {
//put your code here
private $datasource=null;
private $credentials = null;

public function __construct() {
    $netsConn = new configInit(); // Here where the error is happing
    $datasource = $this->$netsConn->getDatabase();
    $credentials = $this->$netsConn->getBasicCredentials();
}
public function connect() 
{
    $conn = mysqli_connect($datasource['servername'], $credentials['username'], $credentials['password']);
    if (!$conn)
    {
        die("Connection failed: " . $conn->connect_error);
    } else {
    return $conn;
    }
}


}

然后我将这个类称为

class applicationsController implements Controller {

private $conn = null;

 public function __construct() {
     $conn = new SqlConnect();
    $this->$conn->connect();
 }
...
}

但是我收到以下错误:

  
    

捕获致命错误:类configInit的对象无法转换为字符串

  

SqlConnect中发生此错误。我在stackoverflow上查看了大约6个答案,其中大多数都是关于尝试回显一些对象,这不是我的情况

2 个答案:

答案 0 :(得分:1)

啊,我想我明白了。

您要分配给全局变量 $netsConn,而不是对象属性 $netsConn ...

试试这个:

 private $netsConn;
 ...
 $this->netsConn = new configInit();

...也就是说,如果你想保留它。否则,直接将变量引用到(never-declared ...)属性。

答案 1 :(得分:1)

您收到错误的原因是由于以下2行

netsConn = new configInit(); // Here where the error is happing
$datasource = $this->$netsConn->getDatabase();

第一行很好,但在第二行,您使用$ netsConn作为SqlConnect类的属性名称($ this)。为此,php必须使用$ netsConn的字符串表示,试图调用它的魔术方法__toString()的实现。由于这可能在您的configInit()类中不存在,因此您最终会遇到该错误。