No.2ベストアンサー
- 回答日時:

No.1
- 回答日時:
関数を引数に取る関数を一般に高階関数と呼ぶ。
高階関数:
https://ja.wikipedia.org/wiki/%E9%AB%98%E9%9A%8E …
そして、高階関数に与える引数になる関数をコールバック関数、って呼ぶんだ。
PHP自体は知らんのだけど、callfuncの引数はcallableと言うキーワード(?多分)によって関数が指定されている。恐らく、文字列callfunc + "Hello"と言うコンビネーションが関数Helloを呼び出す仕組みになってて、それがcallfuncの本体で実行されてる、ってだけの話だろう。
うーん、多分PHPは「関数がファーストクラスオブジェクト」じゃない、んでcallable + "関数名"って書式になってんだろうね。
第一級オブジェクト:
https://ja.wikipedia.org/wiki/%E7%AC%AC%E4%B8%80 …
他の主だった「関数がファーストクラスオブジェクト」な言語だと次のようになる。
;; Scheme:
(define (Hello)
(display "こんにちわ")
(newline))
(define (callfunc $f)
($f) ;; ここで引数で受け取った関数fを実行
(display "しおりさん")
(newline))
(callfunc Hello)
// JavaScript(ただしconsole.logは実装依存/ブラウザのAPI):
function Hello() {
console.log("こんにちわ");
}
function callfunc(f) {
f(); // ここで引数で受け取った関数fを実行
console.log("しおりさん");
}
callfunc(Hello);
## Python
def Hello():
print("こんにちわ")
def callfunc(f):
f() ## ここで引数で受け取った関数fを実行
print("しおりさん")
callfunc(Hello)
繰り返すが、高階関数とは関数を引数に取る関数、コールバック関数とは高階関数の引数として与える関数だ(callfuncは高階関数、Helloはコールバック関数となる)。
概念は簡単だし、「関数がファーストクラスオブジェクト」なプログラミング言語だと、データとして関数をそのまま与えられるし、そのまんまの関数名が使える。
一方、PHPは恐らく「関数がファーストクラスオブジェクト」と言う設計じゃないんて、引数で与えるキーワードとしてcallableが必要になり、関数名を直接引数として渡せないんで文字列で与えなければならない、と言うそれだけの話じゃないのかな。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Ruby プログラミング 3 2023/06/09 14:30
- その他(プログラミング・Web制作) pythonのプログラムについての質問です。 1 2023/05/26 10:31
- その他(ブログ) 英語が得意な方やブログを運営している方にお聞きしたいです 2 2024/12/13 17:02
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- その他(コンピューター・テクノロジー) Pythonの np.indicesに関する質問です。 2 2023/02/07 08:19
- TOEFL・TOEIC・英語検定 英語 文法 1 2023/02/27 14:01
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- その他(プログラミング・Web制作) 全然分からず困っています。習ったものはPythonで基本的に for~in/if/n=len/inp 2 2023/05/23 22:00
- その他(プログラミング・Web制作) 全然分からず困っています。習ったものはPythonで基本的に for~in/if/n=len/inp 2 2023/05/23 21:47
- その他(コンピューター・テクノロジー) AIに関連する用語を理解したい、RNN、LMM、LSTMなど、書籍で理解したい 1 2023/07/06 22:18
このQ&Aを見た人はこんなQ&Aも見ています
-


PHPの勉強してます。 配列のところですが、 実行結果は、9になりますが、 そのロジックを教えてくだ
PHP
-


HTML&CSSとHTML5&CSS3の違いについて。
HTML・CSS
-


以下のプログラムの実行結果はどうなると思いますか? その理由も教えてください。
Visual Basic(VBA)
-
-
4

index.htmlがうまく反映されない
HTML・CSS
-
5

プログラマー達は何故、プログラムを入れるフォルダーに容量制限があるのを知らない?
C言語・C++・C#
-
6

プログラミングについて プログラミングの練習(勉強)ができるようなサイトなどありませんか? あれば教
その他(プログラミング・Web制作)
-
7

プログラミングの進学について
その他(プログラミング・Web制作)
-
8

Web初心者です。 簡易的なWebページを作成し
その他(プログラミング・Web制作)
-
9

c++の勉強方法を教えてくださいプログラミングをやった事がなく1から勉強を始めようと思います1日1時
C言語・C++・C#
-
10

フロントエンドエンジニアをしていますが、スキルアップのための転職、異動は3年目では早すぎますか? 今
その他(プログラミング・Web制作)
-
11

至急助けてください!!!あと2時間しかないです! ボタンを押したら0ランプが点灯し、コンマ5秒後に1
その他(プログラミング・Web制作)
-
12

プログラミングのやり方ざっくりでいいから教えて
その他(プログラミング・Web制作)
-
13

EJSを仕事でなんとなくで使っているので、もっと体系的に学びたいのですが、おすすめの本やサイトを教え
HTML・CSS
-
14

HTML&CSSとHTML5&CSS3の違いについて。
HTML・CSS
-
15

IT業で開発をされてる方々に質問なんですが、一日に書かれるコード数ってどれくらいですか? また、最近
その他(プログラミング・Web制作)
-
16

覚えることが少ないプログラミング言語を教えて下さい。
その他(プログラミング・Web制作)
-
17

C言語 関数、変数の宣言について
C言語・C++・C#
-
18

perl の open について教えてください。
Perl
-
19

アルゴリズムとコードとは何ですか 現代はネットでコードを探してドラクエ3が作れるとか?
その他(プログラミング・Web制作)
-
20

Webサイトの「デザインのみ(コーディング不要)」を依頼されました。 「レスポンシブデザイン」を希望
HTML・CSS
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ワードでA3横の画面にして、文...
-
バッチファイル 特定ウインドウ...
-
正規表現で、特定の文字列を含...
-
入力フォームの値をQRコードで...
-
1枚の画像をクリックすると複数...
-
Pythonを無料(安価)で学ぶ方...
-
PDFを(htmlのように)無限に縦...
-
GASでスプレッドシートの一番上...
-
jQueryで入力テキスト付きのモ...
-
非同期通信を使うタイミングが...
-
RPA(PowerAutomate)の実装について
-
Ajax React Jqueryの位置づけと...
-
C言語のflagの使い方が分かりま...
-
bxsliderで最初に縦に複数表示...
-
bxsliderで複数のvimeoスライド...
-
php コールバック関数
-
ナイトボットのAliasについて
-
これってなんの電話かわかりま...
-
VBAでクイズゲームの作り方
-
以下のURL入れますか?皆さんは↓
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PDFを(htmlのように)無限に縦...
-
正規表現で、特定の文字列を含...
-
バッチファイル 特定ウインドウ...
-
入力フォームの値をQRコードで...
-
GASでスプレッドシートの一番上...
-
1枚の画像をクリックすると複数...
-
ワードでA3横の画面にして、文...
-
VBA コンボボックスの値をスピ...
-
webページの特定の部分だけ消し...
-
C言語のflagの使い方が分かりま...
-
自作の地図をグーグルマップの...
-
二つのbxsliderをレスポンシブ...
-
Ajax サーバーに負荷かかります...
-
これってなんの電話かわかりま...
-
非同期通信で掲示板を作る際の...
-
RPA(PowerAutomate)の実装について
-
スライドを最後の画像で止めたい
-
bxsliderで最初に縦に複数表示...
-
jQuery を外部ファイルから呼び...
-
車に、ネズミ取りや覆面パトカ...
おすすめ情報










