facebook twitter hatena line email

「Php/php8」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(php8だと警告が出る)
(php8だと警告が出る)
行28: 行28:
 
</pre>
 
</pre>
  
==php8だと警告が出る==
+
===smarty3について、php8だとエラーが出る===
2026/4時点の最新3.1.48でも警告がでる。
+
2026/4時点の最新smarty3.1.48だと、エラーがでる。
 +
<pre>
 +
Fatal error: Type of SmartyCompilerException::$line must be int (as in class Exception) in smarty-3.1.48/libs/sysplugins/smartycompilerexception.php on line 8
 +
</pre>
 +
 
 +
===smarty3について、php8だと警告が出る===
 +
smarty3.1.39に落としても、別の箇所で、警告がでる。
 
<pre>
 
<pre>
 
Warning: Undefined array key "start_time" in smarty-3.1.48/libs/sysplugins/smarty_internal_debug.php on line 146
 
Warning: Undefined array key "start_time" in smarty-3.1.48/libs/sysplugins/smarty_internal_debug.php on line 146

2026年4月5日 (日) 01:00時点における版

クラス名の関数をconstructとして完全に使えなくなった

php7までは非推奨で、php8からは、完全に使えない。 __construnct()にする。

smartyのテンプレの使ってない変数の警告対応

エラー詳細

Warning: Undefined array key "key" 

修正前

{{if $request.key}}

修正後

{{if isset($request.key)}}

smartyのテンプレのincludeで使ってない変数の警告対応

エラー詳細

Warning: Undefined array key "wordlike" 

修正前

{{include file="parts/box.tpl" request=$request wordlike=$wordlike|default:''}}

修正後

{{include file="parts/box.tpl" request=$request wordlike=$wordlike|default:''}}

smarty3について、php8だとエラーが出る

2026/4時点の最新smarty3.1.48だと、エラーがでる。

Fatal error: Type of SmartyCompilerException::$line must be int (as in class Exception) in smarty-3.1.48/libs/sysplugins/smartycompilerexception.php on line 8

smarty3について、php8だと警告が出る

smarty3.1.39に落としても、別の箇所で、警告がでる。

Warning: Undefined array key "start_time" in smarty-3.1.48/libs/sysplugins/smarty_internal_debug.php on line 146
Warning: Undefined array key "start_template_time" in smarty-3.1.48/libs/sysplugins/smarty_internal_debug.php on line 73

Staticがついてないエラー

Staticコールが、できなくなって強制的に、エラー画面がでる。

エラー詳細

Non-static method SessionModel::getInstance() cannot be called statically

対応前

public function getInstance()

対応後

public static function getInstance()

list取得が配列が存在しない警告になる場合

エラー詳細

Warning: Undefined array key 1

修正前

list($dummy, $dummy, $uri_domain) = explode("/", $target);

修正後

$parts = explode("/", $target, 3);
$uri_domain = $parts[2] ?? ;