PHPに慣れる為に週1ぐらいで更新していきます。PHP Manualを読んで実験して行きます。
クラスの基礎
<?php
class Sample
{
public $name = 'hello';
public function displayName() {
echo $this->name;
}
}
$obj = new Sample();
$obj->displayName();
PHP 5.4.0 以降では、新しく作成したオブジェクトのメンバーに、作成したその式の中でもアクセスできるようになりました。
つまり以下のような真似ができるようです。
echo (new DateTime())->format('Y');
クラスのプロパティとメソッドは、それぞれ別の "名前空間" に存在するので、 同じ名前のプロパティとメソッドを共存させることもできます。
名前の衝突はあっても問題ないが、
プロパティに 無名関数 を代入した場合に、その関数は直接呼び出せないということです。 その場合は、たとえば事前にプロパティを変数に代入しておく必要があります。 PHP 7.0.0 からは、括弧で囲むことでプロパティを直接呼び出せるようになりました。
その作用として、無名関数を入れると直接呼び出せなくなるようだ。
継承をする場合はextends
を使用。parent
を使用して継承元のメソッドやプロパティへアクセスできる。
<?php
class Sample
{
public $name = 'hello';
public function displayName() {
echo $this->name . "\n";
}
}
class ExSample extends Sample
{
public function displayName() {
parent::displayName();
echo "Ex hello\n";
}
}
$obj = new ExSample();
$obj->displayName();
::class
を使用するとクラス名を取得できる。namespace
を使用したときに便利に使えるようだ。
<?php
namespace Hoge {
class Sample
{
public function displayClassName() {
echo Sample::class . "\n";
}
}
$obj = new Sample();
$obj->displayClassName();
}