Creation of dynamic property xxx is deprecatedの解決策がわからない [PHP 8.2]

実現したいこと

CodeIgniter3のコードをサーバーで動かしているのですがPHPのバージョンを8.2にすると「Creation of dynamic property xxx is deprecated」というエラーになってしまいます。(PHPのバージョン8.1までは問題ありません)
このエラーを解決したいと考えています。
当方、あまりにもPHPの知識が無いため、具体的なコードを教えて頂けると助かります。

発生している問題・分からないこと

・PHPのバージョンを8.2にするとエラーが表示される(PHPのバージョン8.1までは問題ありません)

エラーメッセージ

error

1↓以下の2つのエラーが表示されます 2 3A PHP Error was encountered 4 5Message: Creation of dynamic property Tpl::$meta is deprecated 6Filename: controllers/Home.php 7Line Number: 13 8 9--- 10 11Message: Creation of dynamic property Tpl::$contents is deprecated 12 13Filename: controllers/Home.php 14 15Line Number: 16

該当のソースコード

controllers/Home.php

1※ WEBサイトのトップページを描画するためのテンプレート / CodeIgniter3 2 3<?php defined('BASEPATH') OR exit('No direct script access allowed'); 4class Home extends webFrontend 5{ 6 7 public function __construct() 8 { 9 parent::__construct(); 10 $this->db->cache_set_path(dirname($this->db->cachedir) . '/home/'); 11 } 12 public function index() 13 { 14 $data = array(); 15 $this->tpl->meta ['title'] = $this->metadata->get_metadata('_home_index_title', 'home'); 16 $this->tpl->meta ['description'] = $this->metadata->get_metadata('_home_index_description', 'home'); 17 $this->tpl->meta ['keywords'] = $this->metadata->get_metadata('_home_index_keywords', 'home'); 18 $this->tpl->contents [] = $this->tpl->fetch('contents/home', $data); 19 $this->tpl->render('layouts/home'); 20 } 21}

試したこと・調べたこと

上記の詳細・結果

・PHP 8.2になって動的プロパティが禁止されたために今回のようなエラーになっていることが分かりました。(参考サイト:(https://qiita.com/rana_kualu/items/53012c8f84e0f92220c1)
※ 自分なりにソースコードを変更したのですがPHPの知識が乏しく貼るのが恥ずかしいです。エラーは解決しませんでした。

・#[AllowDynamicProperties]というコードを追加するだけでこの問題は解決するという情報を見て試したのですがエラー内容は解決できませんでした。

補足

・エラーが指している箇所はソースコードの13行目
$this->tpl->meta ['title'] = $this->metadata->get_metadata('_home_index_title', 'home');

16行目の
$this->tpl->contents [] = $this->tpl->fetch('contents/home', $data);
になると思います。
その間のコードがなぜエラーにならないのかは分かりません。

コメントを投稿

0 コメント