teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

内容そのまま文章一部訂正

2020/06/06 04:02

投稿

antonio
antonio

スコア9

title CHANGED
File without changes
body CHANGED
@@ -1,22 +1,21 @@
1
1
  ###実現したいこと
2
- 定数展開できる変数`$_`が以下のようにあるのですが、関数`myecho()`でこれを使いたいです。
2
+ 関数`myecho()`で定数`TEISU`を使いたいです。
3
+ 以下ではTEISUは展開できません。
3
4
 
4
- パターン123とありますが、みなさんはどれを使いますか?または別案ございますか?
5
5
  ```php
6
6
  <?php
7
7
  define("TEISU","ていすう");
8
8
 
9
- $_ = function($s){return $s;};
10
-
11
9
  function myecho(){
12
- echo "定数を展開→{$_(TEISU)}←定数を展開";
10
+ echo "定数を展開→TEISU←定数を展開"; // TEISUは展開できない
13
11
  }
14
12
  myecho();
15
13
  ```
14
+ 次にパターン123とありますが、みなさんはどれを使いますか?または別案ございますか?
16
15
 
17
-
18
16
  ###パターン1
17
+ `$_`という変数を作ります。
19
- `myecho()`という関数内で`$_`を定義すればできますが、ほかの関数`myecho2()`では使えませんし、使うならいちいち定義しないといけません
18
+ これは`myecho()`という関数内で`$_`を定義すればできますが、ほかの関数`myecho2()`では使えませんし、使うならいちいち定義しないといけません
20
19
  ```php
21
20
  <?php
22
21
  define("TEISU","ていすう");

1

別パターン追記

2020/06/06 04:01

投稿

antonio
antonio

スコア9

title CHANGED
File without changes
body CHANGED
@@ -1,5 +1,7 @@
1
1
  ###実現したいこと
2
2
  定数展開できる変数`$_`が以下のようにあるのですが、関数`myecho()`でこれを使いたいです。
3
+
4
+ パターン123とありますが、みなさんはどれを使いますか?または別案ございますか?
3
5
  ```php
4
6
  <?php
5
7
  define("TEISU","ていすう");
@@ -13,7 +15,7 @@
13
15
  ```
14
16
 
15
17
 
16
- ###試したこと
18
+ ###パターン1
17
19
  `myecho()`という関数内で`$_`を定義すればできますが、ほかの関数`myecho2()`では使えませんし、使うならいちいち定義しないといけませんし
18
20
  ```php
19
21
  <?php
@@ -31,6 +33,7 @@
31
33
  }
32
34
  myecho2();
33
35
  ```
36
+ ###パターン2
34
37
  それとも次のように`global`宣言すればできますが、これもやはりすべての関数でいちいち`global`しないといけないのが億劫です。
35
38
  ```php
36
39
  <?php
@@ -50,4 +53,19 @@
50
53
  }
51
54
  myecho2();
52
55
  ```
53
- いちいち関数内で定義したりglobalを書かずに、定数をそれぞれの関数で展開する方法がございましたら知りたいのですが、可能ですか?
56
+ いちいち関数内で定義したりglobalを書かずに、定数をそれぞれの関数で展開する方法がございましたら知りたいのですが、可能ですか?
57
+
58
+ ###パターン3
59
+ または`$_`など作らずに以下のように代入した方がいいでしょうか?
60
+ ```php
61
+ <?php
62
+ define("TEISU","ていすう");
63
+
64
+ function myecho(){
65
+ $teisu = TEISU;
66
+ echo "定数を展開→$teisu←定数を展開";
67
+ }
68
+ myecho();
69
+
70
+
71
+ ```