書き方
1 2 3 4 |
function kansu($str){ return $str . 'ですよ。'; } echo kansu("太郎"); |
命名規則
PHPの関数名はキャメルケースでもスネークケースでもどちらでも構いません。よく見かけるのはキャメルケースですがそのプロジェクトのコーディング規則に合わせるようにしましょう。
- キャメルケース(kansuCamel)
- スネークケース(kansu_snake)
引数にnullを渡すとエラーになる。
phpの関数は引数にnullを渡すとエラーになってしまいます。対策するための二つのアプローチがあります。一応どちらも使うことは可能ですが、どちらも使った場合null許容型の意味がなくなるのでどちらかに統一するのが望ましいです。
デフォルト引数
下記のように引数にイコールで値を設定してあげると引数のデフォルト値を設定する事が可能です。
1 2 3 4 |
function 関数名($引数名 = デフォルト値) { 処理 } |
null許容型
php7.1から導入されました。
1 2 3 |
function 関数名(?string $引数名) { 処理 } |
こちらは引数の数が足りないとエラーになります。
タイプヒンディング
引数にデータ型を指定します。データ型を指定しなかった場合はなんのデータ型でも渡せてしまいます。タイプヒンディングとしてデータ型を指定した場合は、指定したデータ型以外のデータ型の引数を渡した場合はエラーになります。
1 2 3 4 |
function 関数名(データ型 $引数名) { 処理 } |
可変引数
引数名の前に「...」をつける事で任意の個数の引数を渡す事が可能です。
1 2 3 4 |
function 関数名(...$引数名) { 処理内容 } |
戻り値の型を指定する(PHP7以降)
PHP7から関数名の後ろに戻り値の型を指定する事ができるようになりました。
1 2 3 4 |
function 関数名(): 戻り値の型 { 処理内容 } |
引数に関数を渡す(コールバック関数)
引数に関数を渡す事ができます。代表的な関数としてはarray_mapがあります。配列として渡された各値に対して任意の関数処理を実行して配列として結果を返す事が可能です。
1 2 |
$parameters = [値1,値2,値3]; $配列名 = array_map('任意の関数名', $parameters); |
自作する
下記のようにcallableというデータ型を使用する事で関数を引数に渡す事が可能です。
1 2 3 4 |
function useCombine(callable $func){ //コールバック関数を実行する。 $func; } |
文字列操作関数
strlen
文字のバイト数を取得する事ができます。
1 2 3 4 5 6 7 8 |
$str = "こんにちは"; echo strlen($str); //15 echo("<br>"); echo("<br>"); $str2 = 1234; echo strlen($str2); //4 |
注意点
日本語を扱う場合はバイト数が可変になるので注意です。一般的に今一番使われている文字コードのUTF-8であれば1文字あたり3バイト〜6バイトの間で変動します。
mb_strlen
文字数を取得する事ができます。mbというのはマルチバイトということを指しており日本語等のマルチバイト文字だったとしても1文字としてカウントしてくれるようになります。
1 2 3 4 5 6 7 8 9 10 11 |
echo("<br>"); echo("<br>"); $str = "こんにちは"; echo mb_strlen($str); //5 echo("<br>"); echo("<br>"); $str2 = 1234; echo mb_strlen($str2); //4 |
str_replace
引数を3つ取り、文字列を置換する事が可能です。公式リファレンスを見ればわかりますが、引数の型はmixedとなっており数値でも文字列でもなんでも扱えるという意味になります。
1 |
echo str_replace("太郎","次郎","太郎さん、こんにちは"); //次郎さん、こんにちは |
explode
特定の文字を区切りにして分割して配列に格納します。
1 2 |
$bunkatu = "文字列を、分割、しますよ。"; var_dump(explode('、',$bunkatu)); //array(3) { [0]=> string(12) "文字列を" [1]=> string(6) "分割" [2]=> string(15) "しますよ。" } |
preg_match
第一引数に正規表現を指定して、第二引数に含まれる文字列から値を検索します。値が含まれる場合は1、含まれない場合は0が返ってきます。
1 |
echo preg_match('/テスト/','今日はテストです。'); //1 |
substr
第二引数で指定した文字以降を取得します。ただしマルチバイトには対応していないので注意です。
1 2 |
$str = 12345; echo substr($str,2); //345 |
mb_substr
マルチバイトに対応した第二引数で指定した文字以降を取得します。
1 2 |
$str = "アイウエオ"; echo mb_substr($str,2); //ウエオ |
クラス
クラスに入ると呼び方が変わる。
PHPの下記要素はクラス内に属すると呼び方が変わります。
変数、定数
プロパティという呼び方になります。
関数
メソッドという呼び方になります。
クラスの使い方
クラスの定義
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
class クラス名{ private $変数名 = 値; //コンストラクタ function __construct($変数名 = null){ $this->変数名 = 値; } //メソッド public function メソッド名(){ 処理内容 } //静的メソッド public static function メソッド名(){ 処理内容 } } |
$this
クラス自身を指します。
通常のプロパティやメソッドを参照する。
newでインスタンス化した上でプロパティやメソッドを呼び出します。
1 2 3 |
$変数 = new クラス名; $変数 -> プロパティ名; $変数 -> メソッド名; |
「->」をアロー演算子と呼びます。
静的(static)に呼び出す。
クラス内でstaticをつけたプロパティ等は静的に呼び出す事ができます。
1 2 |
クラス名::静的メソッド名 クラス名::静的プロパティ名 |
「::」をスコープ演算子と呼びます。
継承
子クラスでも親クラスのプロパティやメソッドを使う事ができます。クラスは単一継承になります。
1 2 3 |
class 子クラス extends 親クラス { 処理内容 } |
trait
クラスの継承と異なり、複数のトレイトを組み込む事ができるので柔軟に拡張する事が可能です。なお、呼び出し元と呼び出し先でどちらも同じメソッドを定義した場合は呼び出し先の方が優先して適用されることになります。
呼ばれる側
1 2 3 4 5 6 |
trait トレイト名{ public function メソッド名(){ 処理内容 } } |
使う側
トレイトで呼ばれる側のメソッドを使用する事ができます。
1 2 3 4 |
class クラス名{ use トレイト名1; use トレイト名2; } |
この記事へのコメントはありません。