質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

4回答

8610閲覧

同じ関数名で引数の数違い

ryohasegawa

総合スコア437

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2017/02/26 15:32

PHPで同じ関数名で引数の違う関数を作るとFatal error: Cannot redeclare App\Parts::Css()というエラーが返されて、ネットで調べてみると引数の数におおじてif文で振り分ける方法が紹介されていたんですが、わざわざそんなことをしないと駄目なんでしょうか?
C言語系では、使える便利技だと思うのですが・・・

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

可変長引数の機能ならPHPにもあります。

php

1<?php 2 3function sum(int ...$numbers): int 4{ 5 return array_sum($numbers); 6} 7 8var_dump(sum(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)); // int(55)

引数の数に応じて完全に処理を変えたい,要するに

PHP: strtr - Manual

イメージ説明

↑こういうことをしたいのであれば,

引数の数におおじてif文で振り分ける方法が紹介されていたんですが、わざわざそんなことをしないと駄目なんでしょうか?

こうするしか無いです。

C言語系では、使える便利技だと思うのですが・・・

静的型付言語であるC++とC#はできるようですね。動的型付言語においては,オーバーロードと可変長引数は相反する概念なので,両立は厳しいと思います。PHPだけではなく,RubyやPythonでも不可能です。

投稿2017/02/26 16:39

編集2017/02/26 18:03
mpyw

総合スコア5223

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ryohasegawa

2017/02/27 05:26

わかりやすい解説ありがとうございます。 使えないと少し不便ですね。
guest

0

ベストアンサー

PHP ではいかなる場合においても同じ関数名で関数を定義(オーバーロード)することはできません。言語仕様なので仕方ありません。PHP 5.6 から 可変長引数リスト がサポートされたので、ここあたりを活用してがんばって分岐させるしかありませんね・・・。

投稿2017/02/26 15:54

miyahan

総合スコア3095

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ryohasegawa

2017/02/27 05:23

ありがとうございます。参考にさせてもらいます。
guest

0

C++で使えるオーバーロードのことだと思うのですが、PHPではサポートされていません。
他の方法を使うことで、オーバーロード的な動きを実現することはできます。

投稿2017/02/26 15:46

yamato_hikawa

総合スコア2092

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ryohasegawa

2017/02/27 05:23

ありがとうございます。読んできます。
guest

0

C言語系では、使える便利技だと思うのですが・・・

Cでは使えないと思いますが。C++とかJavaとかのことですかね。

同一関数で引数の数が異なるというのは、
・Cのprintfのように本質的に可変個の引数が必要
・デフォルト値を指定する場合は引数を省略できる
の2ケースくらいしか思い浮かばず、どちらもPHPで不便は無いと思います。
他にケースがあるでしょうか?具体例があると「何故PHPでは不便なのだろう?」と考えることも出来ます。

それとも全く別機能の関数に同じ名前を付けたいと言うことでしたら、この回答は的外れです。

投稿2017/02/26 16:13

otn

総合スコア84498

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ryohasegawa

2017/02/27 05:24

回答ありがとうございます。考えてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問