簡體   English   中英

將 PHP 兼容性從 7.4 更改為 8.0

[英]change PHP compatibility from 7.4 to 8.0

我有一個 php 腳本,需要使此代碼行與 php8.0 兼容:

if ((is_array($key) && is_array($value)) || (strlen($key) > 0 && strlen($value) > 0)) {

我不是程序員/編碼員。 我發現,第二部分( strlen($key) > 0 && strlen($value) > 0 )出錯了。 因為我在應用程序中收到此錯誤消息:

響應:{"result":null,"error":{"code":0,"message":"strlen (): Argument #1 ($string) must be of type string, jtl\Connector\Model\Identity given ","data":"Exception 'TypeError' (Code: 0) with message ' strlen(): Argument #1 ($string) must be of type string, jtl\Connector\Model\Identity given ' in C:\xampp \htdocs\mod2060\jtlconnector\vendor\jtl\connector\src\Core\Database\Mysql.php:567 "},"jtlrpc":"2.0","id":"unknown"} 異常 bei category.push: strlen (): 參數 #1 ($string) 必須是字符串類型,jtl\Connector\Model\Identity 給定

我剛剛將 PHP 版本從 7.45 更改為 8.00 並收到錯誤。 如果我 go 回到 PHP 7.45 它又可以正常工作了。

拋出此錯誤是因為$key$value是 object 而不是字符串 - 錯誤消息表明它是類型為“jtl\Connector\Model\Identity”的 object。 因此,您需要修改該庫並在其中為 class 創建一個__toString 魔術方法function,它定義了如何將 object 轉換為字符串,或者您可能想要執行is_object檢查而不是(或之前)使用strlen .

1 https://www.php.net/manual/en/language.oop5.magic.php#object.tostring

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM