1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Symbol '$変数' is declared but not used. include や require でファイルを読み込んだ時

Posted at

##状況

共通するHTML部分や関数を別ファイルにしてinclude や require でファイルを読み込んだ時(リファクタリング)に、別ファイル内で使っている変数に対してSymbol '$変数' is declared but not used.という記述が出てきた。

Symbol '$変数' is declared but not used.
↓日本語訳
シンボル '$変数'が宣言されていますが、使用されていません

###原因

ユーザー定義の関数の中では変数の有効範囲はローカル関数の中となる。関数の中で使用された変数はデフォルトで有効範囲が関数内部に制限される。
PHP では、グローバル変数は、関数の内部で使用する場合、関数の内部でグローバルとして宣言する必要がある

今回の場合、別ファイルの中で関数を定義したりして、変数のスコープが及ばなくなることが原因だと思われる。

###対処法
PHP では、グローバル変数は、関数の内部で使用する場合、関数の内部でグローバルとして宣言する必要がある。

変数の宣言
  global $変数名;

index.php
// ログイン者の投稿数を取得 
function 関数名(){
		try{
		$db = データベース接続;

             $sql = "SQL文"; 
             
            $res = $db->query($sql);

               // 変数の宣言
               global $result;
    
           if( $res ){
    	   $result = $res->fetchColumn();
           }else{
               return false;
                }
	}catch(Exception $e){
		error_log('エラー発生:'.$e->getMessage());
	}
}

スコープ
ある変数や関数などの名前(識別子)を参照できる範囲のこと。 通常、変数や関数が定義されたスコープの外側からは、それらの名前を用いるだけでは参照できない。 このときこれらの変数や関数は「スコープ外」である、あるいは「見えない」といわれる。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?