2016-10-29 93 views
-1

基本上我從一個數據庫類的mysqli對象並將其存儲在像這樣的變量:如何讓IDE像對象一樣對待某個變量?

$mysqli = Database::getInstance()->getMysqli(); 

該聲明後,當我鍵入$mysqli->我沒有得到任何提示(自動完成)。我試着像這樣(mysqli)$mysqli投射這個物體,但是我得到一個語法錯誤。從getMysqli檢索的對象實際上是一個mysqli對象。我測試了var_dump,結果如下:

object(mysqli)#2(19){[「affected_rows」] => int(0)[「client_info」] => string(79) 「mysqlnd 5.0.11-dev - 20120503 - $ Id:15d5c781cfcad91193dceae1d2cdd127674ddb3e $」[「client_version」] => int(50011)[「connect_errno」] => int(0)[「connect_error」] => NULL [「errno」 ] => int(0)[「error」] => string(0)「」[「error_list」] => array(0){} [「field_count」] => int(0)[「host_info」] = > string(20)「127.0.0.1 via TCP/IP」[「info」] => NULL [「insert_id」] => int(0)[「server_info」] => string(10)「5.7.11-log 「[」server_version「] => int(50711)[」stat「] => string(138)」正常運行時間:604869線程數:3問題:1004慢速查詢:0打開:640刷新表:1打開表格:496查詢第二個avg:0.001「[」sqlstate「] => string(5)」00000「[」protocol_version「] => int(10)[」thread_id「] => int(92)[」warni ng_count「] => int(0)}

如果有人能與我分享他的見解,我會永遠感激,謝謝。

+0

所以,你想知道爲什麼你的編輯是不是給你的屬性?當它涉及到自動完成功能時,您的編輯器通常只知道對象是在該頁面上創建的。所以,如果它是在另一個頁面上創建的,您將無法獲得通話時間提示。 – PHPglue

+0

你在用什麼IDE? – Machavity

+0

@Machavity netbeans – Polnareff

回答

0

花了一分鐘弄清楚,這是當我輸入$ mysqli->我沒有得到任何暗示,聲明(自動完成)後IDE問題

的問題是你的IDE不知道這是什麼線做

$mysqli = Database::getInstance()->getMysqli(); 

在大多數IDE,你應該能夠添加文檔塊,並讓它自動完成

/** @var \mysqli */ 
$mysqli = Database::getInstance()->getMysqli(); 

或者,你可以添加你上面的getMysqli()功能的docblock

/** 
* @return \mysqli 
*/ 
+0

感謝您的迴應,我試過,但沒有運氣。我正在使用netbeans。你能告訴我你知道哪些IDE實現了這種功能嗎?在netbeans中的 – Polnareff

+0

語法有點不同我猜。它會像這樣:/ *(at)var $ mysqli mysqli */...我沒有找到正確的方式來執行(at)返回。然而,目前的解決方案對我來說已經足夠了。萬分感謝。你是一個拯救生命的人。 – Polnareff

+0

PHPStorm比Netbeans在類型提示方面做得好得多 – Machavity

相關問題