関数の命名規則

参考リンク:

// 値渡し:1をコピーして代入
関数名は関数に付ける任意の名前
関数名では大文字小文字は区別されない
1文字目使用できる文字
[ a ~ z ]
[ A ~ Z ]
[ Ox7F ~ 0xFF ] コードを持つ文字
[ _ ] アンダーバー
2文字目以降
[ 0 ~ 9 ]数字が上記に加わる
一度定義されている関数名は使用できない

値渡しと参照渡し

参考リンク:

// 値渡し:1をコピーして代入
$val = 1;
$result = $val;

//参照渡し:値の入れ物を参照先として代入 &を使う
$value = 1;
$result =& $value;
$a = 2;
$b =& $a;  // 変数aを&をつけて代入
$a = 10;    // 変数aの値を変更
echo $b;

# 結果
10

//関数でも参照渡しができる
function add (&$number) {    // 「&」を引数につける
    return ++$number;
}

ob_start():出力される箇所を出力せず、変数に入れる

参考リンク:

// 記録開始
ob_start();
jsonImageOne($ary); // <- 通常は、ここで出力されるものを記録して
$data = ob_get_contents(); // 記録結果を変数に代入
ob_end_clean(); // 記録終了

3項演算子:エルビス演算子:null合体演算子

参考リンク:

//基本
$a ? $a : $b;

//上記の省略 ?: エルビス演算子 php5.3以降
$a ?: $b;

//null合体演算子 ?? php7以降
//存在しない値にアクセスしてもPHP Noticeを出さない

/ $_GET['user'] を取得します。もし存在しない場合は
// 'nobody' を用います。
$username = $_GET['user'] ?? 'nobody';

// 上のコードは、次のコードと同じ意味です。
$username = !is_null($_GET['user']) ? $_GET['user'] : 'nobody';

//未定義のケースも考慮すると、
!empty($a) ? $a : $b

public function __construct(array $config = [])
{
    $this->handler  = $config['handler'] ?? new DefaultHandler();
    $this->callback = $config['callback'] ?? null;
    $this->trial    = $config['trial'] ?? 10;
}

PHP8以後、名前付き引数が可能に

参考リンク:

  
// これまで
array_fill(0, 100, 50);

// 名前付き引数
array_fill(start_index: 0, num: 100, value: 50);
// 順番はバラバラでよい
array_fill(value: 50, num: 100, start_index: 0);
  
  
引数に連想配列を使えば、名前付き引数を使わなくても解決

順番がバラバラ、省略してもOK

参考リンク:


function fuga(array $config = []) {
//php7以降なら有効
    $hoge  = $config['hoge'] ?? 'hoge';
    $callback = $config['callback'] ?? null;
    $trial    = $config['trial'] ?? 10;
    var_dump($hoge);
}
fuga();

$conf = array('apple'=>'りんご', 'peach'=>'もも', 'hoge'=>'バナナ');
fuga($conf);

//PHP5での動作を確保したい場合は、null合体演算子の代替を使う
$hoge  = !is_null($config['hoge']) ? $config['hoge'] : 'hoge';
$callback = !is_null($config['callback']) ? $config['callback'] : null;
$trial    = !is_null($config['trial']) ? $config['trial'] : 10;


string(4) "hoge" string(9) "バナナ"
PHP:継承(extends)、トレイト(trait)

参考リンク:トレイト