我知道这是一个老问题,但我找不到答案。这是我的代码:
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个答案,其中大多数都是关于尝试回显一些对象,这不是我的情况
答案 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()类中不存在,因此您最终会遇到该错误。