ツイート
シェア
LINEで送る
B! はてぶでブックマーク
Pocketでブックマーク
RSSフィード

中級者 - PHPの技術情報

Webのサーバーサイドでよく使われるプログラム言語のPHP。そのPHPについて情報を発信します。

自分で情報を探しながらやっても、なかなかスムーズに答えにたどりつかない人向けです。

経験が足りないだけで、遅かったり、失敗しても自信をなくさなくていいです。いまは大きくなるために、技術を知って試す時期なので。

むしろたくさん悩んで、フリーズして、失敗してください。気がついたら最適な答えを出す力が自然と身についているでしょう。

PHP関数ってなんで'test'()でも実行できるの? いらんもの付けても動く何じゃそりゃの仕様。

php

ふつうプログラミングの関数は、test() のように記述して実行します。

しかしPHPでは、'test'(), "test"() でもまったく同じことができる。

クォーテーションがなくてもいいならいらないじゃん、ていう仕様なんですが、これの正体ははっきりしています。

続きを読む

PHP, Closure::call(), 一時的なバインドで無名関数の実行。'()'とはちがう。

php

Closureクラスは無名関数(クロージャ)、アロー関数の型として使用します。

そのオブジェクトは変数に代入して 『$test()』のように変数に '()' を付けて関数を実行しますが、もうひとつ、Closure::call()を使っても実行可能。

同じ無名関数の実行なんですが、根本的なちがいがある。

続きを読む

PHP, Closureクラス, new演算子でインスタンスは生成できない

php

Closureクラスは無名関数の型として使われますが、クラスといえば new演算子でしょ? といっても過言じゃないインスタンスの生成ができません。

どうやら無名関数やクロージャ、アロー関数の戻り値以外では使われたくないらしい。

わざわざ __construct() で禁止にしているほどです。

続きを読む

PHP, Closureクラス, 外からクラス内の隠蔽したメソッドを実行できるんですけど?

php

本来、クラス内のprivateメソッドはクラス内の他メソッドでしか実行できません。クラスオブジェクトの外からは実行不可能。

でも、Closureクラスを使えばそれができます。

クロージャをクラスメソッドとしてあとで追加できる方法を利用すれば。

このクロージャはクラスの外に定義するのに、クラスメソッドと同じように動きます。

続きを読む