Php/php8

提供: 初心者エンジニアの簡易メモ
ナビゲーションに移動 検索に移動

基底クラスのメソッドの引数の数が合わない

zendのZend_Db_Table_Abstractを使ったクラスで、 を使ってたので、以下エラーがでた。

Method 'AbstractScoreDao::fetchRow()' is not compatible with method 'AbstractDao::fetchRow()'.intelephense(P1038) AbstractScoreDao::fetchRow

対策として、基底クラスのメソッドの引数に、合わせる。

修正前

public function fetchRow($where)

修正後

public function fetchRow($where = null, $order = null, $offset = null)

fetchAllの場合

修正前

public function fetchAll($where)

修正後

public function fetchAll($where = null, $order = null, $count = null, $offset = null)

クラス名の関数を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:''}}

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

エラー詳細

Warning: Undefined array key "request" 

修正前

{{include file="parts/box.tpl" request=$request}}

修正後

{{include file="parts/box.tpl" request=$request|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] ?? ;

.htaccessにmagic_quotes_gpcがあると500エラー

.htaccess内に以下があれば、消す。

php_flag magic_quotes_gpc Off

Zend_Db_Table_Abstractの書き換え

$adapter = $this->getAdapter();
$select = $adapter->select();
- $exp = 'SUM(wintimes) wintimes, SUM(losetimes) losetimes';
+ $exp = [
+                   'wintimes'  => new Zend_Db_Expr('SUM(wintimes)'),
+                   'losetimes' => new Zend_Db_Expr('SUM(losetimes)')
+ ];
$select->from($this->_name, $exp,$this->_schema);
return $adapter->fetchRow($select);