###実現したいこと
関数myecho()
で定数TEISU
を使いたいです。
以下ではTEISUは展開できません。
php
1<?php 2define("TEISU","ていすう"); 3 4function myecho(){ 5 echo "定数を展開→TEISU←定数を展開"; // TEISUは展開できない 6} 7myecho();
次にパターン123とありますが、みなさんはどれを使いますか?または別案ございますか?
###パターン1
$_
という変数を作ります。
これはmyecho()
という関数内で$_
を定義すればできますが、ほかの関数myecho2()
では使えませんし、使うならいちいち定義しないといけません。
php
1<?php 2define("TEISU","ていすう"); 3 4function myecho(){ 5 $_ = function($s){return $s;}; // 関数内で定義する 6 echo "定数を展開→{$_(TEISU)}←定数を展開"; 7} 8myecho(); 9 10function myecho2(){ 11 $_ = function($s){return $s;}; // 使うならいちいち定義しないといけません 12 echo "定数を展開→{$_(TEISU)}←定数を展開"; 13} 14myecho2();
###パターン2
それとも次のようにglobal
宣言すればできますが、これもやはりすべての関数でいちいちglobal
しないといけないのが億劫です。
php
1<?php 2define("TEISU","ていすう"); 3 4$_ = function($s){return $s;}; 5 6function myecho(){ 7 global $_; // 追加 8 echo "定数を展開→{$_(TEISU)}←定数を展開"; 9} 10myecho(); 11 12function myecho2(){ 13 global $_; // いちいちglobalしないといけない 14 echo "定数を展開→{$_(TEISU)}←定数を展開"; 15} 16myecho2();
いちいち関数内で定義したりglobalを書かずに、定数をそれぞれの関数で展開する方法がございましたら知りたいのですが、可能ですか?
###パターン3
または$_
など作らずに以下のように代入した方がいいでしょうか?
php
1<?php 2define("TEISU","ていすう"); 3 4function myecho(){ 5 $teisu = TEISU; 6 echo "定数を展開→$teisu←定数を展開"; 7} 8myecho(); 9 10
回答2件
あなたの回答
tips
プレビュー