回答編集履歴

2

追記

2019/04/23 03:05

投稿

yambejp
yambejp

スコア114572

test CHANGED
@@ -19,3 +19,69 @@
19
19
  参照できません。
20
20
 
21
21
  クラスからコールバックするときにはよく使われる書式です
22
+
23
+
24
+
25
+ # sample
26
+
27
+ コールバックの代表としてpreg_replace_callback関数を例に
28
+
29
+ ```PHP
30
+
31
+
32
+
33
+ <?PHP
34
+
35
+ class hoge{
36
+
37
+ function func_replace1($str){
38
+
39
+ $pattern="/x/";
40
+
41
+ return preg_replace_callback($pattern,array($this,'func_callback'),$str);
42
+
43
+ }
44
+
45
+ function func_replace2($str){
46
+
47
+ $fuga=new fuga;
48
+
49
+ $pattern="/x/";
50
+
51
+ return preg_replace_callback($pattern,array($fuga,'func_callback'),$str);
52
+
53
+ }
54
+
55
+ function func_callback(){
56
+
57
+ return "y";
58
+
59
+ }
60
+
61
+ }
62
+
63
+ class fuga{
64
+
65
+ function func_callback(){
66
+
67
+ return "z";
68
+
69
+ }
70
+
71
+ }
72
+
73
+
74
+
75
+ $hoge=new hoge;
76
+
77
+ print $hoge->func_replace1("xxx");
78
+
79
+ print $hoge->func_replace2("xxx");
80
+
81
+ ```
82
+
83
+ hogeの中ではxをyに、fugaの中ではxをzに変換するコールバック用の関数を用意しておき
84
+
85
+ - func_replace1=hogeクラスの自分の中のメンバ関数を利用するには$thisで渡す
86
+
87
+ - func_replace2=別クラスのメンバ関数を利用するにはインスタンスを渡す

1

追記

2019/04/23 03:05

投稿

yambejp
yambejp

スコア114572

test CHANGED
@@ -9,3 +9,13 @@
9
9
 
10
10
 
11
11
  コールバック処理は無名関数でもできます
12
+
13
+
14
+
15
+ ※クラスを組んでいなければコールバック関数名だけ指定すれば済みますが
16
+
17
+ クラスの中で関数名を指定してもグローバルに関数が定義されているわけではないので
18
+
19
+ 参照できません。
20
+
21
+ クラスからコールバックするときにはよく使われる書式です