質問: ### 前提・実現したいこと PHP5.6とMYSQLで、あるテーブルの全レコード数を取得し、取得した全レコード数を同じページのいろいろな関数で何度か再利用がしたいです。 下記思いついた解決策です。 ###### 全レコード数をグローバル変数に格納しておく →グローバル変数の使い方が間違っているのか、下記で$max_recordに値が入っていないようでした。そもそもPHPでグローバル変数って非推奨なんでしょうか、あえて使いづらく作ってありそうな感じがします。 ``` ``` ````` ##### 全レコード数を使う都度、全レコード数取得のクエリを実行して引数で全レコード数を受け渡しする。 →期待通りの動作はしましたが、とてつもなく非効率な気がします。 全レコード数が3なら3という数字をいろいろな関数から使えるだけでいいのですが、上記2つの方法しか思いつきません。 何かいい解決策がありましたらご教授くださいませ。
回答: こんにちは。 グローバル変数は非推奨ではないですが、影響範囲が大きく 思わぬ障害を引き起こす原因となりやすいです。 (WEBで検索すると色々と話に上がっていますよね) 私からは下記のようにclassを使用した 記述方法をご紹介します。 ``` max_record = 1; } public function B() { // Sample のプライベート変数を表示 echo $this->max_record; } public function C() { return $this->max_record; } } $sample = new Sample(); $sample->A(); $sample->B(); // 1 echo $sample->C(); // 取り出す時はこんな感じです。 ?> ``` こちらの書き方であれば、$max_record は Sample クラス内に留まりますし、 DB アクセス系の関数を一まとまりの class として書いておくことで 分かりやすくなるのではないでしょうか。